1

I had an interview and they asked me to write a java code to read a file from a DISK. I know that I can use both FileInputStream and BufferedReaders. But what is the most suitable and what is the reason ? Is there something special when we read from a disk?

Egan Wolf
  • 3,385
  • 1
  • 13
  • 26
Lasa
  • 31
  • 1
  • 11

2 Answers2

3

The docs state one usecase for FileInputStream:

FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader.

So for Readers, the opposite apply.

A FileInputStream is reading byte by byte, while the BufferedReader is reading char by char.

So if you're reading something with chars, use a Reader. If you're reading binary data, use a Stream.

maio290
  • 5,118
  • 1
  • 14
  • 29
0

Using a Scanner is a good option for reading files. You can construct a Scanner object using a File, an InputStream or a Path object. In addition, a Scanner provides you with several built-in functions which can read most primitive types directly from the source.

Here is an example code for the usage of a Scanner to read long values from a file:

Scanner sc = new Scanner(new File("myNumbers.txt"));
   while (sc.hasNextLong()) {
      long aLong = sc.nextLong();
   }

The discussion here may be a helpful resource for you: Reading a plain text file in Java

I also find this resource helpful for my studies: Ways of reading text file in Java

kader
  • 36
  • 1
  • 4
  • Unfortunately, this is not related to this is question in any way :/ – maio290 Jan 17 '19 at 06:29
  • Why do you suggest it is not related? I wanted to propose an alternative way to streams and readers. Scanner class is very simple and useful way while you are reading a file. Actually when I first come across to Scanner class was again an answer to a question which discusses barely InputStreams. So, I don't think that it is unrelated to topic. – kader Jan 17 '19 at 06:34