二进制I/O

 1 import java.io.BufferedInputStream;
 2 import java.io.BufferedOutputStream;
 3 import java.io.DataInputStream;
 4 import java.io.DataOutputStream;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 import java.io.PrintWriter;
 9 
10 public class TextCode {
11     public static void main(String[] args) throws IOException {
12         
13         DataOutputStream output = new DataOutputStream(
14                 new BufferedOutputStream(new FileOutputStream("data.dat")));
15         output.writeChar('a');
16         output.writeInt(5);//int型32位
17         output.writeInt(16);/*十六进制显示:00 61 00 00 00 05 00 00 00 10*/
18         output.flush();//当缓冲区填满或当流被清空时,数据就被写出。
19         DataInputStream input = new DataInputStream(
20                 new BufferedInputStream(new FileInputStream("data.dat")));
21         System.out.println(input.readChar());
22         System.out.println(input.readInt());
23         System.out.println(input.readInt());
24         output.close();
25         input.close();
26         PrintWriter out = new PrintWriter("text.txt");
27         out.println("你好");
28         out.println("Hello");
29         out.print(10);/*十六进制显示:
30         C4 E3 BA C3 0D OA 48 65 6C 6C 6F 0D 0A 31 30*/
31         out.close();//如果没有调用该方法,数据就不能正确地保存在文件中
32     }
33 }

 

FileInputStream和FileOutputStream类:是为了从/向文件读取/写入字节

FilterInputStream类和FilterOutputStream类:过滤器数据流。

DataInputStream类(从数据流读取字节,并且把它们转换为正确的基本类型或字符串)和DataOutputStream类(将基本类型的值或字符串转换成字节,并且将字节输出到数据流)

  • +readByte():byte    +writeByte(v: int):void
  • +readDouble():double    +writeDouble(v: double):void
  • +writeChar(c: char): void 向输出流写入一个字符(由两个字节组成)
  • +writeChars(s: String): void

BufferedInputStream类和BufferedOutputStream类为存储字节在流中添加一个缓冲区,以提高处理效率。

  • BufferedInputStream(int: InputStream)
  • BufferedOutputStream(filename:String, bufferSize: int)

ObjectInputStream类和ObjectOutputStream类:对象的输入输出。

  • ObjectInputStream(in: InputStream)
  • ObjectOutputStream(out: OutputStream)
 1 import java.io.BufferedInputStream;
 2 import java.io.BufferedReader;
 3 import java.io.DataInputStream;
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.FileNotFoundException;
 7 import java.io.FileReader;
 8 import java.io.IOException;
 9 import java.io.InputStreamReader;
10 import java.util.Scanner;
11 
12 
13 public class Test {
14     public static void main(String[] args) throws IOException {
15         BufferedReader in;
16         try {
17             //FileReader会抛出异常
18             in = new BufferedReader(new FileReader("text.txt"));
19             System.out.println(in.readLine());
20             in.close();
21         } catch (IOException e) {
22         }
23         try {
24             Scanner input = new Scanner(new File("text.txt"));
25             System.out.println(input.nextLine());
26             input.close();
27         } catch (FileNotFoundException e) {
28         }
29         /*BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。*/
30         /*InputStreamReader类将包含字节(用某种字符编码方式表示的字符)的输入流转换为可以产生Unicode字符的读入器*/
31         BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));//字符的读取
32         Scanner input1 = new Scanner(System.in);//从键盘输入
33         try{
34             FileInputStream fileInput = new FileInputStream("text.txt");//只能读入字节和字节数组
35             /*默认不使用缓冲区*/
36             DataInputStream din = new DataInputStream(fileInput);//可以读取数据类型Byte,Int,Char,Double...
37             /*嵌套过滤器来添加多重功能*/
38             DataInputStream dInput = new DataInputStream(
39                     new BufferedInputStream(new FileInputStream("text1.txt")));
40             System.out.println(dInput.readChar());
41             
42         }
43         catch(FileNotFoundException e){
44         }
45         try {
46             FileReader fileReader = new FileReader("tetx.txt");
47         } catch (Exception e) {
48         }    
49     }
50 
51 }

 

posted @ 2013-11-08 17:30  soul390  阅读(274)  评论(0编辑  收藏  举报