在Java API中,可以从其中读入一个字节序列的对象称之输入流,而可以向其中写入一个字节序列的对象称做输出流。 [1] 字节流就是普通的二进制流,读出来的是bit,而字节流不便于处理Unicode形式存储的信息。字符流就是在字节流的基础按照字符编码处理,处理的是char。字符流文件是指读写文件时采用字符流的方法。
字符流就是在字节流的基础按照字符编码处理,处理的是char。
字符输入流(Reader):
构造方法:
protected |
Reader() 创建一个新的字符流 reader,其重要部分将同步其自身的 reader。 |
protected |
Reader(Object lock) 创建一个新的字符流 reader,其重要部分将同步给定的对象。 |
File f1 = new File("D:/aa/bb/cc/d.txt"); FileWriter wr = new FileWriter(f1);
常用方法展示:
read():
要读取的文件:
代码:
public static void main(String[] args) throws Exception {
File f1 = new File("D:/aa/bb/cc/d.txt");
//创建输出流
Reader reader = new FileReader(f1);
//循环读取内容
int n;
while ((n = reader.read()) != -1){
System.out.println((char) n);
}
//关闭资源
reader.close();
}
运行结果:
read(char[] cbuf)
要读取的文件:
代码:
public static void main(String[] args) throws Exception {
File f1 = new File("D:/aa/bb/cc/c.txt");
//创建输入流
Reader reader = new FileReader(f1);
//创建一个char数组接收数据
char[] chars = new char[10];
//循环读取内容
int n;
while ((n = reader.read(chars)) != -1){
String s = new String(chars,0,n);
System.out.print(s);
}
//关闭资源
reader.close();
}
运行结果:
方法摘要:
abstract void |
close() 关闭该流并释放与之关联的所有资源。 |
void |
mark(int readAheadLimit) 标记流中的当前位置。 |
boolean |
markSupported() 判断此流是否支持 mark() 操作。 |
int |
read() 读取单个字符。 |
int |
read(char[] cbuf) 将字符读入数组。 |
abstract int |
read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。 |
int |
read(CharBuffer target) 试图将字符读入指定的字符缓冲区。 |
boolean |
ready() 判断是否准备读取此流。 |
void |
reset() 重置该流。 |
long |
skip(long n) 跳过字符。 |
字符输出流(Writer)
创建输出流:
FileWriter wr = new FileWriter(f1);
使用方法:
public static void main(String[] args) throws Exception {
File f1 = new File("D:/aa/bb/cc/d.txt");
//创建输出流
FileWriter wr = new FileWriter(f1);
//写入内容
wr.write("只因你太美");
//刷新该流的缓冲
wr.flush();
//关闭资源
wr.close();
}
注意:写入内容后需要使用flush()方法刷新,否则内容不会被写入。
运行结果:
方法摘要:
Writer |
append(char c) 将指定字符添加到此 writer。 |
Writer |
append(CharSequence csq) 将指定字符序列添加到此 writer。 |
Writer |
append(CharSequence csq, int start, int end) 将指定字符序列的子序列添加到此 writer.Appendable。 |
abstract void |
close() 关闭此流,但要先刷新它。 |
abstract void |
flush() 刷新该流的缓冲。 |
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) 写入字符串的某一部分。 |