java 字符流
字符输入流
Writer 写入字符流的抽象类,子类必须实现的方法仅有write (char [], int, int ), flush ()
和close ()。多数子类将重写此方法定义的方法,用来提高效率。
对文件操作,使用FileWrite类完成。
字符输出流:Writer
使用字符输出流完成写文件操作:
public static void write1 ()
{
File f= new File("D://1.txt");
try {
// true表示追加输出
Writer out = new FileWriter(f,true);
String info = "good good study!";
//向文件中写入
out.write(info.toCharArray());
out.close();
}
字符输入流:
用于读取字符的抽象类,
子类必须实现的方法是read(),与close(),但是多数子类将重写定义的方法,
以提高效率。
public static void read1 () {
File f = new File ("D:\\apple.txt");
try {
Reader in = new FileReader(f);
char [] cs = new char [20];
StringBuffer sb = new StringBuffer();
int len= 0 ;
while ((len=in.read(cs))!=-1){
sb.append(new String (cs,0 ,len));
}
in.close();
System.out.println(sb);
}
字节流与字符流的区别:
在所有的流操作里,字节永远是最基础的,任何基于字节流的操作都是正确的,无论是二进制还是非二进制的文件。
如果确认流里只有可打印的字符,可以考虑使用字符流。
由于编码不同,多字节的字符可能占用多个字节,比如GBK占用两个字节,UTF-8汉字就占用3个字节。