在java中不使用循环读取完整文件

read complete file without using loop in java

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to create a Java String from the contents of a file
Whole text file to a String in Java

我正在尝试使用文件读取器读取文件的内容。但我不想一行一行地读这个文件。是否可以不循环地读取整个文件?我使用以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 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();
 }


Java 7单线解决方案

1
List<String> lines = Files.readAllLines(Paths.get("file"), StandardCharsets.UTF_8);

1
 String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);


如果文件很小,可以读取整个数据一次:

1
2
3
4
5
6
7
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 5/6,则可以使用Apache CAMONS IO来读取文件到字符串。类org.apache.commons.io.FileUtils包含几种读取文件的方法。

例如,使用FileUtils#readFileToString方法:

1
2
File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);


如果您使用的是JDK5或更高版本,则可以尝试使用扫描仪。

1
2
3
Scanner scan = new Scanner(file);  
scan.useDelimiter("\\Z");  
String content = scan.next();

或者你也可以用番石榴

1
String data = Files.toString(new File("path.txt"), Charsets.UTF8);