1

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

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

4

3 回答 3

4

堆栈跟踪告诉您错误是什么。path创建实例时尚未分配变量FileReader

您正在分配file_name一个从未使用过的变量。代替

String file = path;

path = file_name;

也不要忘记分配变量line

while ((line = br.readLine()) != null) {

以便可以为其分配一个值以添加到ArrayList

于 2013-09-16T21:42:51.470 回答
2

您应该进行此更改->

                    while ((line = br.readLine()) != null) {
                            list.add(line);
                    }
于 2013-09-16T21:49:31.687 回答
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;
}
于 2013-09-16T21:54:07.017 回答