java常用类解析四:I/O流典型使用方式

   例子:

package http;  
  
import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  
  
/* 
 * Read和Write分别对应InputStream和OutputStream 
 * 前者用于字符流,后者用于字节流 
 * FileReader和FileWrite分别对应与FileInputStream和FileOutputStream 
 * BufferedReader和BufferedWrite分别对应与BufferedInputStream和 
 * BufferedOutputStream 
 * 此示例实现文本文件的字符读写 
 */  
public class FileReaderAndBufferedReaderDemo {  
    public static String read(String fileName) throws IOException {  
        StringBuilder str = new StringBuilder();  
        BufferedReader in = new BufferedReader(new FileReader(fileName));  
        String s;  
        while ((s = in.readLine()) != null)  
            str.append(s + '\n');  
        in.close();  
        return str.toString();  
    }  
  
    public static void write(String fileName, boolean append)  
            throws IOException {  
        BufferedWriter out = new BufferedWriter(  
                new FileWriter(fileName, append));  
        out.write("我是dahai!java hello!");  
        out.close();  
    }  
  
    public static void main(String[] args) {  
        try {  
            write("file/test3.txt", false);  
            System.out.println(read("file/test3.txt"));  
        } catch (IOException e) {  
            // TODO Auto-generated catch block   
            e.printStackTrace();  
        }  
    }  
}  

 

package http;  
  
import java.io.ByteArrayInputStream;  
import java.io.DataInputStream;  
import java.io.IOException;  
  
  
/* 
 * DataInputStream用于读取格式化的数据 
 */  
public class DataInputStreamAndByteArrayInputStreamDemo {  
    public static void main(String[] args) throws IOException {  
        DataInputStream in = new DataInputStream(new ByteArrayInputStream(  
                FileReaderAndBufferedReaderDemo.read("file/test3.txt")  
                        .getBytes()));  
        while (in.available() != 0)  
            System.out.print((char) in.readByte());  
  
    }  
}  

 

package test;  
  
import http.FileReaderAndBufferedReaderDemo;  
  
import java.io.IOException;  
import java.io.StringReader;  
/* 
 * StringReader操作的是字符串 
 */  
public class StringReaderDemo {  
    public static void main(String[] args) throws IOException {  
        StringReader in = new StringReader(FileReaderAndBufferedReaderDemo  
                .read("file/test3.txt"));  
        int c;  
        while ((c = in.read()) != -1)  
            System.out.print((char) c);  
    }  
}  

 

package test;  
  
import http.FileReaderAndBufferedReaderDemo;  
  
import java.io.IOException;  
import java.io.PrintWriter;  
  
/* 
 * 对应于PrintStream 
 * 用于格式化输出到文件 
 */  
public class PrintWriterDemo {  
    public static void main(String[] args) throws IOException {  
        // 简化的创建方式   
        PrintWriter out = new PrintWriter("file/test4.txt");  
        // 也可以这样创建: out=new Printer(new BufferedWriter(new   
        // FileWriter("file/test4.txt")));   
        // 格式化输出到文本   
        out.println('a');  
        out.println(3);  
        out.println(3.5);  
        out.print("我爱你!i love you");  
        out.close();  
        // 从文本读取刚才的写入   
        System.out.println(FileReaderAndBufferedReaderDemo  
                .read("file/test4.txt"));  
    }  
  
}  

 

package test;  
  
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.RandomAccessFile;  
  
/* 
 * RandomAccessFile直接继承Object,可以进行随机输入和输出,类似于c语言的文件操作 
 * 要指明以什么方式打开文件,用这个类时要知道文件的排版,该类有读写基本类型和UTF-8字符串 
 * 的各种方法,可以定位到文件的某一位置进行读写 
 */  
public class RandomAccessFileDemo {  
    public static void main(String[] args) throws FileNotFoundException {  
        RandomAccessFile out = new RandomAccessFile("file/test5", "rw");  
        try {  
            out.writeInt(1);  
            out.writeDouble(3.3);  
            out.writeChar('a');  
            out.writeUTF("hello,java!");  
            out.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        RandomAccessFile in = new RandomAccessFile("file/test5", "r");  
        try {  
            in.seek(4);  
            System.out.println(in.readDouble());  
            in.seek(4+8+2);  
            System.out.println(in.readUTF());  
            in.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}  

 

package test;  
  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.ObjectInputStream;  
import java.io.ObjectOutputStream;  
import java.io.Serializable;  
  
/* 
 * ObjectInputStream(ObjectOutputStream)用于对象的序列化 
 * 直接对一个对象进行读写,该对象须实现Serializable 
 */  
public class ObjectInputStreamDemo {  
    public static void writeObject(String fileName, Object o, boolean isAppend)  
            throws FileNotFoundException, IOException {  
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(  
                fileName, true));  
        out.writeObject(o);  
        out.close();  
    }  
  
    public static Object readObject(String fileName)  
            throws FileNotFoundException, IOException, ClassNotFoundException {  
        ObjectInputStream in = new ObjectInputStream(new FileInputStream(  
                fileName));  
        Object o = in.readObject();  
        in.close();  
        return o;  
    }  
  
    public static void main(String[] args) {  
        try {  
            ObjectInputStreamDemo.writeObject("file/object", new Person(),  
                    false);  
            ((Person) ObjectInputStreamDemo.readObject("file/object"))  
                    .display();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
  
}  
  
class Person implements Serializable {  
    private String name = "刘海房liuhaifang";  
    private int sex = 0;  
  
    Person(String name, int sex) {  
        this.name = name;  
        this.sex = sex;  
    }  
  
    Person() {  
    }  
  
    void display() {  
        System.out.println("my name is :" + name);  
        String s = (sex == 0) ? "男" : "女";  
        System.out.println(s);  
    }  
}  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值