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




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

तो मेरा 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"));

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

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


Http://java.sun.com/javase/6/docs/api/java/io/File.html से http://java.sun.com/javase/6/docs/api/java/io/File.html :

java.io अंतर्गत वर्ग वर्तमान उपयोगकर्ता निर्देशिका के विरुद्ध सापेक्ष पथनाम हल करते हैं, जो आम तौर पर निर्देशिका है जिसमें वर्चुअल मशीन शुरू की गई थी।

ग्रहण कार्यशील निर्देशिका को शीर्ष-स्तरीय प्रोजेक्ट फ़ोल्डर में सेट करता है।


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

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

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


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

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

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

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/

मुझे एक ही समस्या है। यदि आपकी परियोजना में 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))
//<...>

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

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







relative-path