java输入输出流

来源:互联网 发布:python txt 转成xml 编辑:程序博客网 时间:2024/06/05 15:30

1.java输入输出流分类

1.1按数据流的方向不同分为输入流和输出流

注意:输入输出相对于程序来说的,而不是文件

1.2按处理数据单位不同分为字节流和字符流:

字节流按字节处理,字符流按字符(两个字节,unicode编码,较适合中文处理)处理。凡是以Stream结尾的都是字节流,凡是以Reader或是Writer结尾的都是字符流

                  字节流(Stream)      字符流(两个字节)

输入流            InputStream                Reader

输出流           OutputStream              Writer

1.3按功能不同分为节点流和处理流

节点流可以套上处理流,这样可以套用处理流中的方法,比如BufferedReaderreadLine每次读取一行的方法。

转换流:InputStreamReaderOutputStreamWriter用于与字节数据到字符数据之间转换。(a)InputStreamReader需和InputStream“套接,InputStream转换成Reader. (b)OutputStreamWriter需和OutputStream“套接,OutputStream转换成Writer.

需要提醒的是PrintStreamprintWriter,这两个输出流不会抛出异常,而且有自动flush功能;对于printWriter即可以用writer字符输出流也可以用outputstream字节输出流来初始化。

2.输入输出流基本样例

下面的例子涵盖了基础的FileInputStream/FileOutputStream节点流,BufferedReader理流以及InputStreamReader转换流,DataOutputStream,ObjectOutputStream(需要实现Serializable接口), PrintStreamPrintWriter

package com.zgd.io;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.PrintWriter;import java.io.Serializable;public class CopyFile {public static void main(String[] args) throws IOException { //1.InputStream  Reader Buffered 节点流 处理流 // 转换流 InputStreamReader OutputStreamReaderString DIR="/home/zgd/workspace/IO/src/com/zgd/io/";//1.FileInputStreamFileInputStream fis = new FileInputStream(DIR+"copyfile.txt");FileOutputStream fos = new FileOutputStream(DIR+"writefile.txt");if(fis != null){int b;while((b = fis.read()) != -1){//System.out.println((char)b);fos.write(b);}}fis.close();fos.close();//2.BufferedReader   InputStreamReader转换流BufferedReader buff = new BufferedReader(new InputStreamReader(new FileInputStream(DIR+"copyfile.txt")));String temp=null;while((temp=buff.readLine())!=null){System.out.println(temp);}buff.close();//3.DataOutputStreamDataOutputStream out1 = new DataOutputStream(new FileOutputStream(DIR+"writefile.txt"));out1.writeInt(3);out1.writeDouble(1.445);out1.writeDouble(323.44);out1.writeDouble(-23.44);out1.close();DataInputStream in1 = new DataInputStream(new FileInputStream(DIR+"writefile.txt"));int count = in1.readInt();for(int i=1; i<=count; ++i){double d = in1.readDouble();System.out.println(d);}//4.ObjectOutputStreamStudent s1 = new Student(1,"zenggd",20);Student s2 = new Student(2,"harry",22);ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(DIR+"object.dat"));oos.writeObject(s1);oos.writeObject(s2);oos.writeObject(null);//oos.flush();oos.close();ObjectInputStream ois = new ObjectInputStream(new FileInputStream(DIR+"object.dat"));try {Student t ;while((t= (Student) ois.readObject()) != null) {System.out.println(t);}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}//5.PrintStream PrintWriterPrintWriter pw = new PrintWriter(new FileOutputStream(DIR+"ps.txt"));String zgd="zgd is a good boy";double dd = 3.44223;pw.println(zgd);pw.println(dd);pw.close();}}class Student implements Serializable{private int num=0;private String name="";private int age=0;public Student(int num, String name, int age) {super();this.num = num;this.name = name;this.age = age;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student [num=" + num + ", name=" + name + ", age=" + age + "]";}}

原创粉丝点击