1

現在、趣味でJavaのプログラミングを学んでいます。私は NetBeans について多くのことを読んだり練習したりしましたが、この問題に関する正式なトレーニングは受けていません。ですから、初歩的なミスを犯した場合は、そのことを覚えておいてください。

さて、Java でファイルを読み取る方法のコードが与えられました。私は、これと同じコードがウェブ全体やここに散らばっているのを見てきました。私はそれを気にしません。:)

今、私が言ったように、私はかなりの量の読書と研究を行ってきましたが、与えられたコードががらくたであることを知っています. (私が何を与えられたか疑問に思っている方のために説明すると、パッケージは "textfiles" と呼ばれ、クラスは "FileData" & "ReadFile" と呼ばれ、"ReadFile" クラスの下のメソッドとして "readFile" と "OpenFile" が付けられていました。 ?) とにかく、私はそれにうんざりして、自分で書きました。今、私は少し苦労しています。私は何を間違っていますか?

ここに私のメインクラスがあります:

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 に答える
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 に答える