FileWriter(字符输出流),PrintWriter(字符输出流),FileOutputStream(字节输出流)
String str = "中国人"; //写出 /*FileOutputStream fos = new FileOutputStream("1.txt"); fos.write(str.getBytes("UTF-8")); fos.close();*/ /*FileWriter fw = new FileWriter("1.txt"); fw.write(str); fw.close();*/ PrintWriter pw = new PrintWriter("1.txt","utf-8"); pw.write(str); pw.close();
FileReader(字符输入流),BufferedReader(字符输入流),FileInputStream(字节输入流)
//读入 /*FileReader fr = new FileReader("1.txt"); char[] buf = new char[1024]; int len = fr.read(buf); String myStr = new String(buf,0,len); System.out.println(myStr);*/ /*FileInputStream fr = new FileInputStream("1.txt"); byte[] buf = new byte[1024]; int len = fr.read(buf); String myStr = new String(buf,0,len,"UTF-8"); System.out.println(myStr);*/ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("1.txt"),"UTF-8")); String myStr = br.readLine(); br.close(); System.out.println(myStr);
PipedWriter(字符输出流),PipedOutStream(字节输出流),PipedReader(字符输入流),PipedInputStream(字节输入流)
PipedInputStream的一个实例要和PipedOutputStream的一个实例共同使用,共同完成管道的读取写入操作。主要用于线程操作。
CharArrayWriter,ByteArrayOutputStream,CharArrayReader,ByteArrayInputStream,是在内存中开辟了一个字节或字符数组。
BufferedWriter,BufferedOutputStream,BufferedReader,BufferedInputStream是带缓冲区的处理流,缓冲区的作用的主要目的是:避免每次和硬盘打交道,提高数据访问的效率。
OutputStreamWriter,InputStreamReader把字节转化成字符。
DataOutputStream,DataInputStream
因为平时若是我们输出一个8个字节的long类型或4个字节的float类型,那怎么办呢?可以一个字节一个字节输出,也可以把转换成字符串输出,但是这样转换费时间,若是直接输出该多好啊,因此这个数据流就解决了我们输出数据类型的困难。数据流可以直接输出float类型或long类型,提高了数据读写的效率。
PrintWriter,PrintStream一般是打印到控制台,可以进行控制打印的地方。
ObjectOutputStream,ObjectInputStream把封装的对象直接输出,而不是一个个在转换成字符串再输出。
使用对象流需要实现Serializable接口,否则会报错。而若用transient关键字修饰成员变量,不写入该成员变量,若是引用类型的成员变量为null,值类型的成员变量为0
对象序列化:把对象直接转换成二进制,写入介质中。
原文:http://www.cnblogs.com/tufujie/p/5042547.html