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

  1. package http;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.BufferedWriter;  
  5. import java.io.FileReader;  
  6. import java.io.FileWriter;  
  7. import java.io.IOException;  
  8.   
  9. /* 
  10.  * Read和Write分别对应InputStream和OutputStream 
  11.  * 前者用于字符流,后者用于字节流 
  12.  * FileReader和FileWrite分别对应与FileInputStream和FileOutputStream 
  13.  * BufferedReader和BufferedWrite分别对应与BufferedInputStream和 
  14.  * BufferedOutputStream 
  15.  * 此示例实现文本文件的字符读写 
  16.  */  
  17. public class FileReaderAndBufferedReaderDemo {  
  18.     public static String read(String fileName) throws IOException {  
  19.         StringBuilder str = new StringBuilder();  
  20.         BufferedReader in = new BufferedReader(new FileReader(fileName));  
  21.         String s;  
  22.         while ((s = in.readLine()) != null)  
  23.             str.append(s + '\n');  
  24.         in.close();  
  25.         return str.toString();  
  26.     }  
  27.   
  28.     public static void write(String fileName, boolean append)  
  29.             throws IOException {  
  30.         BufferedWriter out = new BufferedWriter(  
  31.                 new FileWriter(fileName, append));  
  32.         out.write("我是dahai!java hello!");  
  33.         out.close();  
  34.     }  
  35.   
  36.     public static void main(String[] args) {  
  37.         try {  
  38.             write("file/test3.txt"false);  
  39.             System.out.println(read("file/test3.txt"));  
  40.         } catch (IOException e) {  
  41.             // TODO Auto-generated catch block  
  42.             e.printStackTrace();  
  43.         }  
  44.     }  
  45. }  


 

  1. package http;  
  2.   
  3. import java.io.ByteArrayInputStream;  
  4. import java.io.DataInputStream;  
  5. import java.io.IOException;  
  6.   
  7.   
  8. /* 
  9.  * DataInputStream用于读取格式化的数据 
  10.  */  
  11. public class DataInputStreamAndByteArrayInputStreamDemo {  
  12.     public static void main(String[] args) throws IOException {  
  13.         DataInputStream in = new DataInputStream(new ByteArrayInputStream(  
  14.                 FileReaderAndBufferedReaderDemo.read("file/test3.txt")  
  15.                         .getBytes()));  
  16.         while (in.available() != 0)  
  17.             System.out.print((char) in.readByte());  
  18.   
  19.     }  
  20. }  


 

  1. package test;  
  2.   
  3. import http.FileReaderAndBufferedReaderDemo;  
  4.   
  5. import java.io.IOException;  
  6. import java.io.StringReader;  
  7. /* 
  8.  * StringReader操作的是字符串 
  9.  */  
  10. public class StringReaderDemo {  
  11.     public static void main(String[] args) throws IOException {  
  12.         StringReader in = new StringReader(FileReaderAndBufferedReaderDemo  
  13.                 .read("file/test3.txt"));  
  14.         int c;  
  15.         while ((c = in.read()) != -1)  
  16.             System.out.print((char) c);  
  17.     }  
  18. }  


 

  1. package test;  
  2.   
  3. import http.FileReaderAndBufferedReaderDemo;  
  4.   
  5. import java.io.IOException;  
  6. import java.io.PrintWriter;  
  7.   
  8. /* 
  9.  * 对应于PrintStream 
  10.  * 用于格式化输出到文件 
  11.  */  
  12. public class PrintWriterDemo {  
  13.     public static void main(String[] args) throws IOException {  
  14.         // 简化的创建方式  
  15.         PrintWriter out = new PrintWriter("file/test4.txt");  
  16.         // 也可以这样创建: out=new Printer(new BufferedWriter(new  
  17.         // FileWriter("file/test4.txt")));  
  18.         // 格式化输出到文本  
  19.         out.println('a');  
  20.         out.println(3);  
  21.         out.println(3.5);  
  22.         out.print("我爱你!i love you");  
  23.         out.close();  
  24.         // 从文本读取刚才的写入  
  25.         System.out.println(FileReaderAndBufferedReaderDemo  
  26.                 .read("file/test4.txt"));  
  27.     }  
  28.   
  29. }  


 

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


 

  1. package test;  
  2.   
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.ObjectInputStream;  
  8. import java.io.ObjectOutputStream;  
  9. import java.io.Serializable;  
  10.   
  11. /* 
  12.  * ObjectInputStream(ObjectOutputStream)用于对象的序列化 
  13.  * 直接对一个对象进行读写,该对象须实现Serializable 
  14.  */  
  15. public class ObjectInputStreamDemo {  
  16.     public static void writeObject(String fileName, Object o, boolean isAppend)  
  17.             throws FileNotFoundException, IOException {  
  18.         ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(  
  19.                 fileName, true));  
  20.         out.writeObject(o);  
  21.         out.close();  
  22.     }  
  23.   
  24.     public static Object readObject(String fileName)  
  25.             throws FileNotFoundException, IOException, ClassNotFoundException {  
  26.         ObjectInputStream in = new ObjectInputStream(new FileInputStream(  
  27.                 fileName));  
  28.         Object o = in.readObject();  
  29.         in.close();  
  30.         return o;  
  31.     }  
  32.   
  33.     public static void main(String[] args) {  
  34.         try {  
  35.             ObjectInputStreamDemo.writeObject("file/object"new Person(),  
  36.                     false);  
  37.             ((Person) ObjectInputStreamDemo.readObject("file/object"))  
  38.                     .display();  
  39.         } catch (IOException e) {  
  40.             e.printStackTrace();  
  41.         } catch (Exception e) {  
  42.             e.printStackTrace();  
  43.         }  
  44.     }  
  45.   
  46. }  
  47.   
  48. class Person implements Serializable {  
  49.     private String name = "刘海房liuhaifang";  
  50.     private int sex = 0;  
  51.   
  52.     Person(String name, int sex) {  
  53.         this.name = name;  
  54.         this.sex = sex;  
  55.     }  
  56.   
  57.     Person() {  
  58.     }  
  59.   
  60.     void display() {  
  61.         System.out.println("my name is :" + name);  
  62.         String s = (sex == 0) ? "男" : "女";  
  63.         System.out.println(s);  
  64.     }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值