在Java中读取文本文件
我有这样一个文本文件:在Java中读取文本文件,java,text,io,Java,Text,Io,我有这样一个文本文件: Item 1 Item 2 Item 3 我需要能够将每个“itemx”读入一个字符串,并理想地将所有字符串存储为vector/ArrayList 我试过: InputStream is = new FileInputStream("file.txt"); is.read(); //looped for every line of text 但这似乎只处理整数 谢谢您应该使用FileUtils来完成此操作。它有一个名为 公共静态列表读取行(文件、字符集编码)引发IOE
Item 1
Item 2
Item 3
我需要能够将每个“itemx”读入一个字符串,并理想地将所有字符串存储为vector/ArrayList
我试过:
InputStream is = new FileInputStream("file.txt");
is.read(); //looped for every line of text
但这似乎只处理整数
谢谢您应该使用FileUtils来完成此操作。它有一个名为
公共静态列表读取行(文件、字符集编码)引发IOException
将文件的内容逐行读取到字符串列表中。文件始终处于关闭状态
请参阅上面@backslax的注释,以了解如何使用
InputStream.read()
错误
@反斜杠还提到,只有在使用Java 1.7或更高版本时,才可以使用反斜杠。这里有几个答案,对我们来说,最简单的是扫描仪(在Java.util中)
Scanner scan = new Scanner(new FileInputStream("file.txt"));
scan.nextLine();
它有几个方便的方法,如nextLine()和next()以及nextInt(),因此您可以简单地执行以下操作:
Scanner scanner = new Scanner(new File("file.txt"));
List<String> text = new ArrayList<String>();
while (scanner.hasNextLine()) {
text.add(scanner.nextLine());
}
Scanner Scanner=新的扫描仪(新文件(“File.txt”);
列表文本=新的ArrayList();
while(scanner.hasNextLine()){
text.add(scanner.nextLine());
}
或者,您可以使用BufferedReader(在java.io中):
BufferedReader=new BufferedReader(new FileReader(“file.txt”);
列表文本=新的ArrayList();
for(字符串行;(line=reader.readLine())!=null;){
文本。添加(行);
}
但是,扫描仪通常更易于使用。您可以使用Java 7的
文件#readAllLines
。短的一行程序,无需第三方库导入:)
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();
}
列表行=
Files.readAllLines(path.get(“file.txt”)、StandardCharsets.UTF_8);
但这似乎只处理整数。这是它的正常行为。From JavaDocs:read():从输入流中读取数据的下一个字节。他说的是对的,您必须将字节解码回字符。看看这个-1因为没有对Java的IO API进行任何研究…+1因为提出了一个理由,为什么你-1:-虽然我同意这种方法,但我认为它并不能回答他的问题。我认为他的问题更多的是编码和读取字节Stream@Jackie我想这确实回答了他的问题。他的问题是关于如何将文本文件读入列表。他的方法有问题,因为他不正确地使用了read()
,但是如果他一开始就知道这个库,他不会在意read()
为什么不能按他想要的方式工作。没有必要使用FileUtils
,而且Files
类有一个readAllLines
方法,因此,无需导入apachecommons包即可this@BackSlash这是一个很好的观点。唯一需要注意的是,您必须使用Java 7才能使用文件@tieTYT我知道,我的答案只是对您的答案的一个“加号”,事实上,在每一个Java版本上都可以使用,而不仅仅是在最后一个版本上
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
List<String> text = new ArrayList<String>();
for (String line; (line = reader.readLine()) != null; ) {
text.add(line);
}
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();
}
List<String> lines =
Files.readAllLines(Paths.get("file.txt"), StandardCharsets.UTF_8);