【字节流】:
通过字节来访问和读写数据,它是以字节为单位。
【继承关系】:
InputStream----FileInputStream
OutputStream----FileOutputStream
【FileInputStream】
其中的方法:
int available() 取得所读取数据所占的字节数
int read() 读取文件中的一个字符;
int read(char[] buf) 从流中读取数据保存至buf[]中,并返回所读取的字节的总数。
FileInputStream file1 = new FileInputStream("C:\java\a.txt");
char []buf = new char[file1.available()];
file1.read(buf);//将读取的数据保存至数组buf中。
System.out.println(buf);//输出读取的数据
file1.close();
【FileOutputStream】
它的write()方法:
void |
write(char[] cbuf) 写入字符数组。 |
abstract void |
write(char[] cbuf, int off, int len) 写入字符数组的某一部分。 |
void |
write(int c) 写入单个字符。 |
void |
write(String str) 写入字符串。 |
void |
write(String str, int off, int len) 写入字符串的某一部分。 |
【字符流】:
Reader -----BufferedReader
------InputStreamReader---FileReader
Writer -----BufferedWriter
------OutputStreamReader---FileWriter
[BufferedReader & FilerReader] 使用方法差不多,但是,BufferedReader要比使用FileReader使用效率更高,可以调用的方法也差不多,但是他要多一个newLine()方法,用来输出一个回车符号(换行)
【在不同的系统中的换行符号是不一样的,在Xp系统中,使用 ,但是JVM中要使用 来换行】
【FileReader】
用来读取文字文件,在使用时必须先调用FileReader的构造函数,来创建FileReader的对象,再利用read()来读取文件。
int read() 读取文件中的一个字符;
int read(char[] buf) 从流中读取数据保存至buf[]中,并返回所读取的字节的总数。
【FileWriter】
void |
write(char[] cbuf) 写入字符数组。 |
abstract void |
write(char[] cbuf, int off, int len) 写入字符数组的某一部分。 |
void |
write(int c) 写入单个字符。 |
void |
write(String str) 写入字符串。 |
void |
write(String str, int off, int len) 写入字符串的某一部分。 |
BfferedReader 用来读取缓冲区的字符
BufferedReader(Reader in) 创建缓冲区字符读取流。
BufferedReader(Reader in ,int size);
提供的一个特殊的方法是:可以读取整行数据。
String readLine(); 读取一整行字符。
在使用BufferedReader()之前必须要先创建一个FilerReader 对象,再以它为参数来创建BufferedReader的对象,这样就可以使用这个对象来。
FilerReader fr = new FileReader("C:\........");
BufferedReader br = new BufferedReader(fr);
while((string =bf.readLine() )!=null )
System.out.println(string);
【【字节流是不能处理中文的,但是字符流可以的】】
【提高IO效率】
加快字节流用户可以使用缓冲数据流进行处理,前面几种文件处理的方法效率太低了。
BufferedInputStream 和 BufferedOutputStream