-3

次のようなテキストファイルがあります。

Item 1
Item 2
Item 3

各「項目 X」を文字列に読み取り、理想的にはすべての文字列をベクトル / ArrayList として格納できるようにする必要があります。

私は試した:

InputStream is = new FileInputStream("file.txt");
is.read(); //looped for every line of text

しかし、それは整数のみを処理するようです。

ありがとう

4

5 に答える 5

4

ここにはいくつかの答えがありますが、最も簡単なのはスキャナー (java.util 内) です。

nextLine() 、 next() 、 nextInt() などのいくつかの便利なメソッドがあるため、次のように簡単に実行できます。

Scanner scanner = new Scanner(new File("file.txt"));
List<String> text = new ArrayList<String>();
while (scanner.hasNextLine()) {
  text.add(scanner.nextLine());
}

別の方法として、BufferedReader (java.io 内) を使用することもできます。

BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
List<String> text = new ArrayList<String>();
for (String line; (line = reader.readLine()) != null; ) {
  text.add(line);
}

ただし、スキャナーは一般的に操作が簡単です。

于 2013-06-21T19:24:06.517 に答える
4

これを行うには、FileUtils を使用する必要があります。readLinesという名前のメソッドがあります

public static List<String> readLines(File file, Charset encoding) throws IOException

ファイルの内容を 1 行ずつ文字列のリストに読み込みます。ファイルは常に閉じられています。


上記の@BackSlashのコメントを参照して、InputStream.read()間違った使い方を確認してください。


@BackSlashは、Java 1.7 以降を使用している場合にのみ、java.nio.file.Files#readAllLinesを使用できるとも述べました。

于 2013-06-21T19:21:44.907 に答える
2

Java 7 を使用できますFiles#readAllLines。短いワンライナーで、サードパーティのライブラリのインポートは必要ありません:)

List<String> lines = 
       Files.readAllLines(Paths.get("file.txt"), StandardCharsets.UTF_8);
于 2013-06-21T19:24:23.183 に答える
1
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
    try {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();
        String [] tmp ;
        while (line != null) {
            sb.append(line);
            tmp = line.Split(" ");
            line = br.readLine();
        }
        String everything = sb.toString();
    } finally {
        br.close();
    }
于 2013-06-21T19:24:16.863 に答える
0
Scanner scan = new Scanner(new FileInputStream("file.txt"));
scan.nextLine();
于 2013-06-21T19:23:51.063 に答える