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
I am trying to read the contents of a file using FileReader . But i want to read the file without reading a line by line . Is it possible to read the whole file without loop. I am using the following code
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 one line solution
List<String> lines = Files.readAllLines(Paths.get("file"), StandardCharsets.UTF_8);
or
String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);
If the file is small, you can read the whole data once:
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");
You can try using Scanner if you are using JDK5 or higher.
Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next();
Or you can also use Guava
String data = Files.toString(new File("path.txt"), Charsets.UTF8);
If you are using Java 5/6, you can use Apache Commons IO for read file to string. The class org.apache.commons.io.FileUtils
contais several method for read files.
e.g. using the method FileUtils#readFileToString
:
File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);
Since Java 11 you can do it even simpler:
import java.nio.file.Files;
Files.readString(Path path);
Files.readString(Path path, Charset cs)
Source: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)