IO流与序列化

 

 

一.输入输出流

 

 

public class IOStreamDemo {

 

    public static void main(String[] args) throws IOException {

       //  1.Reading input by lines

       BufferedReader in = new BufferedReader(new FileReader("G://document//note//note.txt"));

       String s,s2 = new String();

       while((s = in.readLine())!=null)

           s2 += s + "/n";

       in.close();

      

       //1b. Reading standard input

       BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

       System.out.print("Enter a line:");

       System.out.println(stdin.readLine());

      

       //2. Input from memory

       StringReader in2 = new StringReader(s2);

       int c;

       while((c = in2.read())!= -1)

           System.out.print((char)c);

      

       //3. Formatted memory input

       try{

           DataInputStream in3 = new DataInputStream(new ByteArrayInputStream(s2.getBytes()));

           while(true)

              System.out.print((char)in3.readByte());

       }

       catch(EOFException e){

           System.err.println("End of stream");

       }

      

       //4. File output

       BufferedReader in4 = new BufferedReader(new StringReader(s2));

       PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("G://document//note//output.txt")));

       int lineCount = 1;

       while((s = in4.readLine())!= null)

           out1.println(lineCount++ + ":" + s);

       out1.close();

 

or

        File file = new File("D:/test.file");
        FileOutputStream fos = null;
        OutputStreamWriter osw = null;
        BufferedWriter out = null;
        try{
          fos = new FileOutputStream(file);
           osw = new OutputStreamWriter(fos);
          out = new BufferedWriter(osw);
          String fileHeader = "test";
          out.write(fileHeader);
           out.newLine();
      }

 

      

       //5. Storing & recovering data

       DataOutputStream out2 = new DataOutputStream(

                                new BufferedOutputStream(

                                 new FileOutputStream("G://document//note//data.txt")));

       out2.writeDouble(3.14159);

       out2.writeUTF("That was pi");

       out2.close();

       DataInputStream in5 = new DataInputStream(

                              new BufferedInputStream(

                                    new FileInputStream("G://document//note//data.txt")));

       //Must use DataInputStream for data:

       System.out.println(in5.readDouble());

       //Only readUTF() will recover the Java -UTF String properly:

       System.out.print(in5.readUTF());

      

       //6. Reading/writing random access files

       RandomAccessFile rf = new RandomAccessFile("rtest.dat","rw");

       for(int i = 0; i<10; i++)

           rf.writeDouble(i*1.414);

       rf.close();

       rf = new RandomAccessFile("rtest.dat","r");

       for(int i = 0; i<10; i++)

           System.out.println("Value "+ i + ": "+rf.readDouble());

       rf.close();

    }

}

 

 

 

二.序列化

 

 

 

/**

 * 对象序列化:

 * 首先创建某些OutputStream对象,然后将其封装在一个ObjectOutputStream对象内。

 * 这时,只需调用writeObject()即可将对象序列化,并将其发送给OutputStream

 * 要反向进行该过程(将一个序列还原为一个对象),需要将一个InputStream封装在

 * 一个ObjectInputStream内,然后调用readObject().

 */

class Alien implements Serializable{

    //……

}

 

public class FreezeAlien {

 

    public static void main(String[] args) throws FileNotFoundException, IOException {

       ObjectOutput out = new ObjectOutputStream(new FileOutputStream("x.file"));

       Alien zorcon = new Alien();

       out.writeObject(zorcon);

    }

}

 

class ReadAlien{

    public void test() throws IOException, IOException, ClassNotFoundException{

       ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File("..","x.file")));

        Object mystery = in.readObject();

       System.out.print(mystery.getClass());

    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值