Java中IO部分(四)
字符流
字符输出流Writer类
字符流适合处理中文,Writer类是字符输出流的处理类,这个类定义如下:public abstract class Writer entends Object implements Appendable,Closeable,Flushable,多了Appendable接口。
在Writer类里面提供了 writer()方法,接收的类型都是char型的,
1.输出内容: public void write(String str)throws IOException
如果要操作文件肯定使用FileWriter 子类。
实例:通过Writer 类实现输出。
package com.se.core;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class TestDemo {
public static void main(String[] args) throws Exception {
File file=new File("d:"+File.separator+"abc"+File.separator+"hell.txt");//通过File类定义路径
if(!file.getParentFile().exists())
{file.getParentFile().mkdirs();}
Writer out=new FileWriter(file);
String ss="我们是祖国的花朵";
out.write(ss);
out.close();
}
}
字符输入流Reader类
Reader也是一个抽象类,如果文件读取,用FileReader子类进行实现,在Reader中没有一个方法直接读取字符串的方法,这时候只能字符数组进行读取操作。
实例:通过文件读取数据
package com.se.core;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class TestDemo {
public static void main(String[] args) throws Exception {
File file=new File("d:"+File.separator+"abc"+File.separator+"hell.txt");//通过File类定义路径
if(file.exists()){
Reader in=new FileReader(file);
char c[]=new char[1024];
int length=in.read(c);
System.out.println(new String(c,0,length));
in.close();
}
}
}
注:字符流主要用于处理中文
字节流和字符流的区别
从代码的形式上看,字符流和字节流区别不了,一般优先考虑字节流,在处理中文时需要用字符流,因为所有的字符都需要都需要通过内存缓存来进行处理,既然读数据需要缓存处理,写数据也需要,在用字符流没有进行刷新的,数据可能在缓存中
package com.se.core;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class TestDemo {
public static void main(String[] args) throws Exception {
File file=new File("d:"+File.separator+"abc"+File.separator+"hell.txt");//通过File类定义路径
if(!file.getParentFile().exists())
{file.getParentFile().mkdirs();}
Writer out=new FileWriter(file);
String ss="我们是祖国的花朵11";
out.write(ss);
out.flush();//写上此语句表示强制清空缓存,所有内容都输出
}
}
所有以后再处理IO操作时,如果处理的是音乐、图片、文字都可以使用 字节流,而在处理中文的时候才会优先考虑字符流