String fileName = 'yourFileFullNameWithPath';
File file = new File(fileName); // Creates a new file object for your file
FileReader fr = new FileReader(file);// Creates a Reader that you can use to read the contents of a file read your file
BufferedReader br = new BufferedReader(fr); //Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.
上述行可以写成一行:
BufferedReader br = new BufferedReader(new FileReader("file.txt")); // Optional
添加到字符串生成器(如果文件很大,建议使用字符串生成器,否则使用普通字符串对象)
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
String everything = sb.toString();
} finally {
br.close();
}
Scanner in = new Scanner(new File("filename.txt"));
while (in.hasNext()) { // Iterates each line in the file
String line = in.nextLine();
// Do something with line
}
in.close(); // Don't forget to close resource leaks
28条答案
按热度按时间lnlaulya1#
这可能不是问题的确切答案。这只是另一种读取文件的方法,在这种方法中,您没有在java代码中显式指定文件的路径,而是将其作为命令行参数读取。
使用以下代码,
继续,用以下方法运行它:
这将读取
input.txt
然后打印到你的控制台上。你也可以做你的
System.out.println()
通过命令行写入特定文件的步骤如下:这是从
input.txt
写信给output.txt
.mrfwxfqh2#
e4yzc0pl3#
我编写的这段代码对于非常大的文件要快得多:
bfnvny8b4#
对于基于jsf的maven web应用程序,只需使用classloader和
Resources
要在任何文件中读取的文件夹:将要读取的任何文件放在resources文件夹中。
将apache commons io依赖项放入pom:
使用下面的代码读取它(例如,下面是在.json文件中读取的):
您可以对文本文件、.properties文件、xsd模式等执行相同的操作。
tsm1rwdh5#
ascii是一个文本文件,因此您可以使用
Readers
为了阅读。java还支持使用InputStreams
. 如果正在读取的文件很大,那么您应该使用BufferedReader
在树顶上FileReader
以提高读取性能。通读这篇关于如何使用
Reader
我还建议您下载并阅读这本名为《java思考》的精彩(免费)书籍在java 7中:
(文件)或
(文档)
在java 8中:
(文档)
rdlzhqv96#
Guava提供了一个班轮:
gcmastyq7#
你想怎么处理这篇课文?这个文件小到可以放入内存吗?我会尽量找到最简单的方法来处理您的需要的文件。fileutils库非常适合处理这个问题。
z5btuh9x8#
到目前为止,我还没有看到其他答案中提到这一点。但是,如果“best”意味着速度,那么新的javai/o(nio)可能会提供最快的性能,但对于学习的人来说并不总是最容易理解的。
http://download.oracle.com/javase/tutorial/essential/io/file.html
jjhzyzn09#
上述行可以写成一行:
添加到字符串生成器(如果文件很大,建议使用字符串生成器,否则使用普通字符串对象)
vq8itlhq10#
其中的方法
org.apache.commons.io.FileUtils
也可能非常方便,例如:lkaoscv711#
您可以使用readalllines和
join
在一行中获取整个文件内容的方法:它默认使用utf-8编码,可以正确读取ascii数据。
您还可以使用readallbytes:
我认为readallbytes更快更精确,因为它不会将新行替换为
\n
也可能是新的路线\r\n
. 这取决于你的需要哪一个合适。ou6hu8tu12#
这基本上与jesus ramos的答案完全相同,只是使用file而不是filereader,再加上逐步遍历文件内容的迭代。
... 投掷
FileNotFoundException
hzbexzde13#
缓冲流类在实践中的性能要高得多,以至于nio.2api包含了专门返回这些流类的方法,部分原因是为了鼓励您在应用程序中始终使用缓冲流。
举个例子:
您可以替换此代码
与
我推荐本文来学习javanio和io的主要用法。
dm7nw8vv14#
我在java中记录了15种读取文件的方法,然后用不同的文件大小测试了它们的速度—从1 kb到1 gb和以下三种方法:
java.nio.file.Files.readAllBytes()
在Java7、8和9中进行了测试。import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFile_BufferedReader_ReadLine {
public static void main(String [] args) throws IOException {
String fileName = "c:\temp\sample-10KB.txt";
FileReader fileReader = new FileReader(fileName);
}
}
```
java.nio.file.Files.lines()
这在Java8和Java9中测试过,但由于lambda表达式的要求,在Java7中不起作用。q9yhzks015#
可能没有缓冲i/o那么快,但非常简洁:
这个
\Z
图案告诉我们Scanner
分隔符是eof。