我很困惑何时应该使用 FileReader
与 BufferedReader
的组合以及何时使用 FileInputStream
来读取文件(并输出到日志)?
/**
* Created by mona on 3/26/16.
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
public class FileExample {
public static void main (String[] args) throws java.io.IOException {
File newFile = new File("tweet.txt");
FileWriter fileWriter = new FileWriter(newFile);
fileWriter.write("Mona Jalal");
fileWriter.append("\nMona Mona");
fileWriter.close();
/*FileReader fileReader = new FileReader(newFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
fileReader.close();
bufferedReader.close();
*/
FileInputStream fis = new FileInputStream(newFile);
System.out.println("fis");
System.out.println(fis.read()); //prints 77
int content;
while ((content=fis.read())!=-1){
System.out.print((char) content);
}
fis.close();
}
}
我正在使用Java 8
。
最佳答案
用于读取原始字节:FileInputstream https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html
A FileInputStream obtains input bytes from a file in a file system. What files are available depends on the host environment. FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader.
用于有效读取字符、数组、行(使用缓冲区) https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html
Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines. The buffer size may be specified, or the default size may be used. The default is large enough for most purposes.
In general, each read request made of a Reader causes a corresponding read request to be made of the underlying character or byte stream. It is therefore advisable to wrap a BufferedReader around any Reader whose read() operations may be costly, such as FileReaders and InputStreamReaders. For example,
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
will buffer the input from the specified file. Without buffering, each invocation of read() or readLine() could cause bytes to be read from the file, converted into characters, and then returned, which can be very inefficient.
Java 有非常好的文档!
关于java - FileReader 与 BufferedReader 或 FileInputStream 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36256321/