无法读取Java中的文本文件。

时间:2013-09-16 21:40:35

标签: java readfile filereader

目前,我正在学习如何用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());”。

感谢您的时间和建议。 :)

3 个答案:

答案 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;
}