Four ways to read a file in java. I have tested an execution time of them using 1,37 MB text file with 108825 lines. Result of tests is in a first comment of each method and is specified in milliseconds.
1.2 FileInputStream with readFully()
1 Read entire file at once
1.1 FileInputStream with read()// execution time: 7 - 8 ms ByteArrayOutputStream buffer = new ByteArrayOutputStream(); File file = new File("C:\\test.txt"); InputStream is = new FileInputStream(file); byte[] temp = new byte[1024]; int read; while ((read = is.read(temp)) >= 0) { buffer.write(temp, 0, read); } byte[] data = buffer.toByteArray(); System.out.println(new String(data));PS: remember that read(byte[] b) doesn't do what you think it does -> link
1.2 FileInputStream with readFully()
// execution time: 11 - 12 ms File file = new File("C:\\test.txt"); DataInput input = new DataInputStream(new FileInputStream(file)); byte[] bufferArray = new byte[(int) file.length()]; input.readFully(bufferArray); String value = new String(bufferArray);
2 Read file line by line
2.1 BufferedReader with readLine()// execution time: 19 - 20 ms FileInputStream fStream = new FileInputStream("C:\\test.txt"); DataInputStream in = new DataInputStream(fStream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line; while ((line = br.readLine()) != null) { System.out.println(line); }2.2 Scanner with nextLine(
// execution time: 196 - 216 ms File file = new File("c://test.txt"); Scanner scanner = new Scanner(file); while (scanner.hasNextLine()) { scanner.nextLine(); System.out.println(line); } scanner.close();
Comments
Post a Comment