使用csv文件导出java应用程序
我有一个java应用程序,其中我使用了两个excel文件.csv文件作为输入。我想制作该java应用程序的可运行jar。但在我运行jar时将该java项目导出为可运行jar后,它不包含两个输入csv文件 有谁能帮我导出带有csv文件的java应用程序吗 下面是我用来访问csv文件的代码行使用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
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