ยังไงเพื่อสร้างขวดโหลที่มีแฟ้มที่รองเว็บเบราว์เซอร์ภายนอกแฟ้ม

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 เป็นตัวแทนขอแฟ้ม ที่อยู่ใน แฟ้ม. เป็นรายการย่ลงในขวดโหลแฟ้มไม่ใช่แฟ้ม

รหัสของคุณ ไม่สามารถทำงาน สำหรับสิ่งที่คุณต้องการที่ต้องทำ

แฟ้มผิด name=ดึงดูดใจ description. คุณต้องการ 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);
  }
}

บางอย่างกำลังอยู่ในนั้น snippet:

  • ใช้ ThisClass.classไม่ใช่ getClass(). ที่ getClass ทำลายเส้นทางตอนที่คุณคลาสย่อย. คุณอาจจะไม่ทำเช่นนั้นตรงนี้แต่คุณอาจจะทีหลังมันจะดีกว่าต้องเขียนรหัสนั่นเสมอทำงานเมื่อมันเหมือนกับที่สั้น.
  • มันเป็นทรัพยากร,คุณต้องปิดมัน นี่รหัสดังนั้นใช้พยายามกับทรัพยากร
  • เราได้ InputStream(getResourceAsStream จะได้ค่าเป็น inputstream)ซึ่งเป็นที่ถูกต้องระดับ name=ดึงดูดใจ description ที่สามารถเป็นตัวแทนของปรากฎอยู่ในโหล(กับ File ซึ่งไม่สามารถทำอย่างนั้น).
  • เราบอกเครื่องสแกนอะไรชุดรหัสอักขระการเข้ารหัสอักขระย ไม่อย่างนั้นคุณได้แพลตฟอร์มปริยายซึ่งมันผิดและน่ารังเกียจ:ขอคอมพิวเตอร์มันจะทำงานแล้วคุณก็วิ่งหนีมันอีกระบบและมันจะล้มเหลว เสมอตลอดเวระบุชุดรหัสอักขระการเข้ารหัสภาษาได้ทุกเมื่อมูเป็นกลายเป็น chars(หรือรอง versa).
  • e.printStackTrace() เป็นความชั่วร้าย ไม่เคยจัดการข้อยกเว้นอย่างนั้น ถ้าคุณไม่รู้หรอก(และนั่นคือยุติธรรมที่นี่ถ้ามันจับโยน IOEx เห็นชัดว่ามีบางอย่างอนอย่างผิดและมันจะเป็นความคิดที่ดีสำหรับแอ๊ปของคุณต้องไปอยู่กับกรายละเอียดเท่าที่เป็นไปได้)ที่อยู่เหนือคือวิธีที่ถูกต้องในข้อตกลงกับมัน
2021-11-18 02:07:53

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่