次のようなテキストファイルがあります。
Item 1
Item 2
Item 3
各「項目 X」を文字列に読み取り、理想的にはすべての文字列をベクトル / ArrayList として格納できるようにする必要があります。
私は試した:
InputStream is = new FileInputStream("file.txt");
is.read(); //looped for every line of text
しかし、それは整数のみを処理するようです。
ありがとう
ここにはいくつかの答えがありますが、最も簡単なのはスキャナー (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);
}
ただし、スキャナーは一般的に操作が簡単です。
これを行うには、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を使用できるとも述べました。
Java 7 を使用できますFiles#readAllLines
。短いワンライナーで、サードパーティのライブラリのインポートは必要ありません:)
List<String> lines =
Files.readAllLines(Paths.get("file.txt"), StandardCharsets.UTF_8);
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();
}
Scanner scan = new Scanner(new FileInputStream("file.txt"));
scan.nextLine();