कैसे बनाने के लिए एक जार फ़ाइल है कि बाह्य फ़ाइलों में शामिल हैं

0

सवाल

मैं शामिल करना चाहते हैं पाठ फ़ाइल में संसाधन फ़ोल्डर के लिए जार फ़ाइल है । यहाँ कम से कम उदाहरण के लिए:

import java.io.File;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.readFile( "test.txt" );
    }

    public void readFile(String fileName){
        File file = new File( getClass().getResource( fileName ).getPath() );

        try{
            Scanner scanner = new Scanner( file );
            while ( scanner.hasNextLine() ){
                System.out.println( scanner.nextLine() );
            }
        }catch (Exception e){
            System.out.println( e );
        }
    }
}

यहाँ है क्या में test.txt फ़ाइल:

hello
world

यह मेरी परियोजना की तरह दिखता है:

enter image description here

मैं चला सकते हैं कोड सफलतापूर्वक । जिस तरह से मैं उत्पन्न जार के रूप में निम्नानुसार है:

enter image description here

मैं पहले से ही जोड़ा गया संसाधन फ़ोल्डर क्लिक करके "+" का प्रतीक है । हालांकि, जब मैं कॉल उत्पन्न जार फ़ाइल है, यह अभी भी शिकायत FileNotFoundException.

किसी भी सुझाव है?

intellij-idea jar java
2021-11-18 02:01:21
1

सबसे अच्छा जवाब

1

new File का प्रतिनिधित्व करता है एक फ़ाइल है. के रूप में, एक फ़ाइल. एक प्रविष्टि में एक जार फ़ाइल नहीं है एक फ़ाइल है.

अपने कोड काम नहीं कर सकता क्या आप के लिए क्या करना चाहते हैं.

फ़ाइल गलत अमूर्त. आप चाहते हैं InputStream या संभवतः URL, दोनों जिनमें से प्रतिनिधित्व कर सकते हैं फ़ाइलें, नेटवर्क धाराओं, मक्खी पर उत्पन्न सामान है, और, हाँ, प्रविष्टियों में जार फ़ाइलें.

public void readFile(String fileName) {
  try (var in = ThisClass.class.getResourceAsStream(fileName)) {
    Scanner scanner = new Scanner(in, StandardCharsets.UTF_8);
    // proceed here.
  } catch (IOException e) {
    throw new RuntimeException("Uncaught", e);
  }
}

कुछ चीजों पर जा रहे हैं में है कि टुकड़ा:

  • का उपयोग करें ThisClass.classनहीं , getClass(). के getClass मार्ग टूट जाता है जब आप उपवर्ग. हो सकता है आप नहीं करते हैं, तो यहाँ है, लेकिन आप हो सकता है के बाद, यह बेहतर कोड लिखने के लिए है कि हमेशा काम करता है जब यह बस के रूप में कम है.
  • यह एक संसाधन है, तो आप चाहिए बंद करें । इस कोड का उपयोग करता है, इसलिए प्रयास के साथ संसाधनों.
  • हम एक InputStream (getResourceAsStream रिटर्न एक inputstream) है, जो सही स्तर के अमूर्त है कि कर सकते हैं का प्रतिनिधित्व करते हैं, एक प्रविष्टि एक जार (बनाम File जो सिर्फ ऐसा नहीं कर सकते).
  • हम बता स्कैनर क्या charset एन्कोडिंग है. अन्यथा आप मंच डिफ़ॉल्ट है, जो गलत और बुरा: अपने कंप्यूटर पर यह हमेशा काम करेंगे, तो आप इसे चलाने के लिए पर एक और प्रणाली है और यह विफल रहता है । हमेशा की तरह, हमेशा निर्दिष्ट charset एन्कोडिंग कभी भी बाइट्स में बदल रहे हैं वर्ण (या इसके विपरीत).
  • e.printStackTrace() बुराई है । कभी नहीं संभाल अपवाद है कि जिस तरह से. यदि आप कोई पता नहीं है (और यह ठीक है यहाँ, अगर यह फेंकता IOEx, स्पष्ट रूप से कुछ बुरी तरह से गलत है और यह एक अच्छा विचार के लिए अपने app करने के लिए बस दुर्घटना के साथ के रूप में ज्यादा विस्तार के रूप में संभव है) - उपरोक्त के लिए सही तरीका है इसके साथ सौदा.
2021-11-18 02:07:53

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में