Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用csv文件导出java应用程序_Java_Csv_Executable Jar - Fatal编程技术网

使用csv文件导出java应用程序

使用csv文件导出java应用程序,java,csv,executable-jar,Java,Csv,Executable Jar,我有一个java应用程序,其中我使用了两个excel文件.csv文件作为输入。我想制作该java应用程序的可运行jar。但在我运行jar时将该java项目导出为可运行jar后,它不包含两个输入csv文件 有谁能帮我导出带有csv文件的java应用程序吗 下面是我用来访问csv文件的代码行 String csvFile = "./input/silkair.Schedule1 (1).csv"; //InputStream inputStream = getClass().getResou

我有一个java应用程序,其中我使用了两个excel文件.csv文件作为输入。我想制作该java应用程序的可运行jar。但在我运行jar时将该java项目导出为可运行jar后,它不包含两个输入csv文件

有谁能帮我导出带有csv文件的java应用程序吗

下面是我用来访问csv文件的代码行

  String csvFile = "./input/silkair.Schedule1 (1).csv";

 //InputStream inputStream = getClass().getResourceAsStream(csvFile);
    BufferedReader br = null;


//          br = new BufferedReader(new InputStreamReader(inputStream));
            br = new BufferedReader(new FileReader(csvFile));

如果您想从jar中读取CSV文件,那么它们必须包含在jar中。使用jar tvf your.jar或zip实用程序进行检查。如果从jar读取文件,请将InputStreamReader与getResourceAsStream一起使用


如果您想从文件系统中读取CSV文件,那么您需要将它们放在文件系统中,而不是放在jar中,或者在运行之前从jar中提取它们。。。。如果从文件系统读取文件,请将FileReader与文件系统文件名一起使用

这是一个演示

两个源文件—一个从jar读取,一个从文件系统读取:

$ cat ReadFile.java
import java.io.*;
public class ReadFile {
public static void main(String[] args) throws IOException {
        String csvFile = args[0];
        BufferedReader reader = new BufferedReader(new FileReader(csvFile));
        String line;
        while((line = reader.readLine()) != null) {
                System.out.println(line);
        }
}
}

$ cat ReadResource.java
import java.io.*;
public class ReadResource {
public static void main(String[] args) throws IOException {
        String csvFile = args[0];
        BufferedReader reader = new BufferedReader(new InputStreamReader(ReadResource.class.getResourceAsStream(csvFile)));
        String line;
        while((line = reader.readLine()) != null) {
                System.out.println(line);
        }
}
}
jar-CSV文件的内容位于_input_u/my.CSV:

文件系统的内容-输入/my.CSV时的CSV文件:

使用ReadFile,您可以从文件系统中读取,但不能从jar中读取:

$ java -cp readtest.jar ReadFile input/my.csv
foo,bar
bar,foo

$ java -cp readtest.jar ReadFile _input_/my.csv
Exception in thread "main" java.io.FileNotFoundException: _input_\my.csv (The system cannot find the path specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at java.io.FileReader.<init>(FileReader.java:41)
        at ReadFile.main(ReadFile.java:5)
使用ReadResource,您可以从jar中读取,但不能从文件系统中读取:

$ java -cp readtest.jar ReadResource input/my.csv
Exception in thread "main" java.lang.NullPointerException
        at java.io.Reader.<init>(Reader.java:61)
        at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
        at ReadResource.main(ReadResource.java:5)

$ java -cp readtest.jar ReadResource _input_/my.csv
foo,bar
bar,foo

只需将它们放在项目文件夹中即可。它们首先在项目文件夹中。我刚刚尝试将它们放在单独的文件夹中,但仍然不起作用。您是否已将这些.csv文件添加到项目文件夹中?@atish shimpi是的,我已将这些文件添加到项目文件夹中。但在导出projktrefer链接后,仍然不起作用。在这种情况下,csv文件不应位于您的jar中。如果要从文件系统中读取,需要将它们放在文件系统中。如果它们在罐子里,你可以把它们从罐子里取出来。
$ java -cp readtest.jar ReadFile input/my.csv
foo,bar
bar,foo

$ java -cp readtest.jar ReadFile _input_/my.csv
Exception in thread "main" java.io.FileNotFoundException: _input_\my.csv (The system cannot find the path specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at java.io.FileReader.<init>(FileReader.java:41)
        at ReadFile.main(ReadFile.java:5)
$ java -cp readtest.jar ReadResource input/my.csv
Exception in thread "main" java.lang.NullPointerException
        at java.io.Reader.<init>(Reader.java:61)
        at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
        at ReadResource.main(ReadResource.java:5)

$ java -cp readtest.jar ReadResource _input_/my.csv
foo,bar
bar,foo