目前,我正在学习如何用Java编程作为一种爱好。我在NetBeans中做了很多阅读和练习,但我没有接受任何正式的培训。所以,如果我犯了一个新手的错误,请记住这一点。
好的,我给了一个如何用Java读取文件的代码。我已经看到这个相同的代码遍布网络和这里;我不会打扰你们。 :)
现在,就像我说的那样,我一直在做相当多的阅读和学习,我知道我给的代码是垃圾。 (如果你想知道我给了什么,那个包叫做“textfiles”,这个类叫做“FileData”&“ReadFile”,“readFile”和“OpenFile”作为“ReadFile”类下的方法。声音熟悉吗?)无论如何,我厌倦了这一点并自己写了。现在,我有点困难。我做错了什么?
这是我的主要课程:
package javaclass;
import java.io.IOException;
public class JavaClass{
public static void main(String[] args) throws IOException {
String file_name = "C:/users/Admin/test.txt";
try {
Reader rdr = new Reader(file_name);
System.out.println(rdr.OpenFile());
}
catch (IOException e) {
}
}
}
这是我打开和阅读文件的课程:
package javaclass;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
public class Reader extends JavaClass{
private String path;
public Reader(String file_name) throws IOException {
String file = path;
}
public String OpenFile() throws IOException {
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
String line = null;
ArrayList<String> list = new ArrayList<>();
while ((br.readLine()) !=null) {
list.add(line);
}
return list.toString();
}
}
这是我编译时得到的:
Exception in thread "main" java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:134)
at java.io.FileInputStream.<init>(FileInputStream.java:97)
at java.io.FileReader.<init>(FileReader.java:58)
at javaclass.Reader.OpenFile(Reader.java:17)
at javaclass.JavaClass.main(JavaClass.java:12)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
我一直在试图解决这个问题。我看过例外情况。 Reader.java:17引用“FileReader fr = new FileReader(path);”和JavaClass.java:12引用“System.out.println(rdr.OpenFile());”。
感谢您的时间和建议。 :)
答案 0 :(得分:4)
stacktrace告诉你错误是什么。在创建path
的实例时,尚未分配变量FileReader
。
您将file_name
分配给从未使用过的变量。取代
String file = path;
与
path = file_name;
另外不要忘记分配变量line
while ((line = br.readLine()) != null) {
以便为其添加值ArrayList
答案 1 :(得分:2)
您应该进行此更改 - &gt;
while ((line = br.readLine()) != null) {
list.add(line);
}
答案 2 :(得分:1)
while ((br.readLine()) !=null) {
list.add(line);
}
改变:
while (br.ready()) {
list.add(br.readLine());
}
和
public Reader(String file_name) throws IOException {
String file = path;
}
变化
public Reader(String file_name) throws IOException {
path = file_name;
}