java लगत ग्रहण में सापेक्ष फ़ाइल पथ कैसे काम करते हैं?




मानव शरीर पर चंद्र ग्रहण के प्रभाव (6)

मुझे एक ही समस्या है। यदि आपकी परियोजना में YourClass और Hankees.txt की एक निर्देशिका है, तो मुझे निम्न मिलता है - इतना बुरा नहीं।

import java.net.URL;
//<...>
URL url = YourClass.class.getClassLoader().getResource("Hankees.txt");
String filesPathAndName = url.getPath();        
Scanner myScanner = new Scanner(new File(filesPathAndName))
//<...>

तो मेरा 200 9 साल का संकल्प जावा सीखना है। मैंने हाल ही में "डमीज़ के लिए जावा" हासिल किया है और पुस्तक में डेमो कोड के साथ ग्रहण का उपयोग करके इसे फिर से लिखकर निम्नलिखित किया है। वैसे भी, एक सापेक्ष पथ का उपयोग करने वाली पुस्तक में प्रत्येक उदाहरण उस .txt फ़ाइल को पढ़ने के लिए प्रतीत नहीं होता है जिसे इसे पढ़ना है।

नमूना कोड यहां दिया गया है:

import java.util.Scanner;
import java.io.File;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.GridLayout;

class TeamFrame extends JFrame {

    public TeamFrame() throws IOException {
        PlayerPlus player;
        Scanner myScanner = new Scanner(new File("Hankees.txt"));

        for (int num = 1; num <= 9; num++) {
            player = new PlayerPlus(myScanner.nextLine(), myScanner.nextDouble());
            myScanner.nextLine();
            addPlayerInfo(player);
        }      

        add(new JLabel());
        add(new JLabel("   ------"));
        add(new JLabel("Team Batting Aberage:"));
        add(new JLabel(PlayerPlus.findTeamAverageString()));
        setTitle("The Hankees");
        setLayout(new GridLayout(11,2));
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    void addPlayerInfo(PlayerPlus player) {
        add(new JLabel(player.getName()));
        add(new JLabel(player.getAverageString()));
    }
}

और आप नीचे दिए गए स्क्रीन शॉट में देख सकते हैं मैंने इस फ़ाइल को शामिल किया है।

छवि अब उपलब्ध नहीं है

साथ ही, मैंने सत्यापित किया है कि जब मैं एप्लिकेशन का निर्माण करता हूं कि संकलित। क्लास फ़ाइलों के साथ बिन फ़ोल्डर में Hankees.txt की एक प्रति रखी जाती है।

आखिरकार, यदि मैं निम्नलिखित पंक्तियों को पंक्ति 12 में बदलता हूं और अपने सी: \ ड्राइव की जड़ में Hankees.txt डालता हूं तो प्रोग्राम संकलित करता है और ठीक चलता है।

Scanner myScanner = new Scanner(new File("C:\\Hankees.txt"));

तो मूल रूप से, मेरा सवाल यह है कि मैं क्या गलत कर रहा हूं? या ग्रहण किसी के लिए जिम्मेदार है?

किसी भी और सभी तरह की मदद के लिए धन्यवाद!


यह वास्तव में एक और सवाल के समान है। मुझे अपने जावा एप्लिकेशन में फ़ाइलों को कैसे लोड करना चाहिए?

मुझे अपने जावा एप्लिकेशन में अपनी फाइलें कैसे लोड करनी चाहिए?

आप अपनी फाइलों को इनके द्वारा लोड नहीं करना चाहते हैं:

C:\your\project\file.txt

यह बुरा है!

आपको getResourceAsStream का उपयोग करना चाहिए।

InputStream inputStream = YourClass.class.getResourceAsStream(“file.txt”);

और आपको फ़ाइल.सेपरेटर का भी उपयोग करना चाहिए; जो सिस्टम-निर्भर नाम-विभाजक चरित्र है, जो सुविधा के लिए स्ट्रिंग के रूप में दर्शाया गया है।


एक प्रोजेक्ट का निर्माण पथ परिभाषित करता है कि आपके स्रोत फ़ोल्डरों के कौन से संसाधन आपके आउटपुट फ़ोल्डर्स में कॉपी किए गए हैं। आमतौर पर यह सभी फाइलों को शामिल करने के लिए सेट है।

नई निर्देशिका कॉन्फ़िगरेशन कार्यशील निर्देशिका के लिए प्रोजेक्ट निर्देशिका का उपयोग करने के लिए डिफ़ॉल्ट है, हालांकि इसे भी बदला जा सकता है।

यह कोड कार्यशील निर्देशिका के बीच का अंतर दिखाता है, और उस स्थान का स्थान जहां से वर्ग लोड किया गया था:

public class TellMeMyWorkingDirectory {
    public static void main(String[] args) {
        System.out.println(new java.io.File("").getAbsolutePath());
        System.out.println(TellMeMyWorkingDirectory.class.getClassLoader().getResource("").getPath());
    }
}

आउटपुट कुछ ऐसा होने की संभावना है:

C:\your\project\directory
/C:/your/project/directory/bin/

हाँ, ग्रहण पथ के उद्देश्यों के लिए, शीर्ष निर्देशिका को कार्य / रूट निर्देशिका के रूप में देखता है।

... बस सोचा कि मैं कुछ अतिरिक्त जानकारी जोड़ूंगा। मैं यहाँ नया हूँ! मैं मदद करना चाहता हूँ।


आप हमेशा अपना रनटाइम पथ उपयोग करके प्राप्त कर सकते हैं:

 String path = new File(".").getCanonicalPath();

यह फाइलों और संसाधनों को कहां रखना है इसके बारे में मूल्यवान जानकारी प्रदान करता है।


आपको "src/Hankees.txt"

आपकी फ़ाइल स्रोत फ़ोल्डर में है जिसे कार्यशील निर्देशिका के रूप में नहीं माना जाता है। \

या आप फ़ाइल को अपनी प्रोजेक्ट की मूल निर्देशिका में ले जा सकते हैं और बस "Hankees.txt" उपयोग कर सकते हैं





relative-path