在java中不使用循环读取完整文件
可能重复:在java中不使用循环读取完整文件,java,file,io,Java,File,Io,可能重复: 我正在尝试使用FileReader读取文件的内容。但是我不想逐行读取文件。是否可以不循环地读取整个文件。 我正在使用以下代码 try { File ff=new File("abc.txt"); FileReader fr=new FileReader(ff); String s; while(br.read()!=-1) { s=br.readLine(); } } catch(Exce
我正在尝试使用FileReader读取文件的内容。但是我不想逐行读取文件。是否可以不循环地读取整个文件。 我正在使用以下代码
try
{
File ff=new File("abc.txt");
FileReader fr=new FileReader(ff);
String s;
while(br.read()!=-1)
{
s=br.readLine();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
如果使用JDK5或更高版本,可以尝试使用
Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next();
或者你也可以使用
Java7单线解决方案
List<String> lines = Files.readAllLines(Paths.get("file"), StandardCharsets.UTF_8);
如果您使用的是Java5/6,那么可以使用for read file to string。该类包含几个读取文件的方法 e、 g.使用方法
FileUtils\readFileToString
:
File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);
如果文件很小,则可以读取整个数据一次:
File file = new File("a.txt");
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();
String str = new String(data, "UTF-8");
由于Java 11,您可以做得更简单:
import java.nio.file.Files;
Files.readString(Path path);
Files.readString(Path path, Charset cs)
来源:在Android中找不到该文件。并非所有Java答案都必须适合Android,@akauppi!只需从另一个答案中寻找Android支持的解决方案<代码>字符串文本=Files.readString(path.get(“文件”))如果您想要UTF-8字符串输出,则代码>甚至更短。如果您已经拥有File对象,则可以执行
File.toPath()
内部readAllBytes
对Android很重要:调用需要API级别26:java.nio.file.Files#readAllBytes
-对于readString
也是一样。不适用于InputStream的s.a。Android资产(无长度)有多小?文件的全部内容将存储在内存中。因此,避免阅读类似以下内容的5GB文件:-)注意:file.length()
可能会为/proc
下的文件返回0。在这种情况下,此代码段将返回一个空字符串。而且read
可能无法填充整个缓冲区。在大多数JRE的实践中它可能会工作,但API中没有保证。请注意,扫描仪在使用后应该关闭。String data=Files.toString(新文件(“path.txt”)、Charsets.UTF_8)代码>。只是一个小错误。:-)带扫描仪的此代码只能从文件中读取前1024个字节。看看源代码。它读取缓冲区并用这个regexp检查它。这始终有效-然后返回所有缓冲区内容。默认情况下,缓冲区大小为1024字节。这是一种糟糕的方法。正确的解决方案(对于Java 1.7及更高版本)是Files.readAllLines()
。对于旧式JRE,FileInputStream.read()
可能是最好的。我不确定它是否可以移植到所有平台(即Ctl-Z在任何地方都可以识别),而且很容易错过执行Scanner.close()
。这可能是使用第三方库的最简单解决方案。编写的代码最少;要添加到project中的库还有很多。不推荐使用FileUtils类型中的readFileToString(File)方法此代码一开始不会编译。有一个单行Java 11解决方案:
File file = new File("a.txt");
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();
String str = new String(data, "UTF-8");
import java.nio.file.Files;
Files.readString(Path path);
Files.readString(Path path, Charset cs)