java 输入输出流(文件操作)及序列化

java实训的第四天就学到了流的各种操作和类的序列化反序列化,对于没认真学过的人进度有些快。好了废话不多说了。

流按处理数据类型不同划分为字符流,字节流。二者应用方面很容易区分,前者处理文本文件,后者处理各种文件。
这里写图片描述
举一个例子:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

import org.junit.Test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
public class Findfile {
@Test
    public static void main(String[] args) throws IOException 
    {
        new Findfile().saveFile("/Users/tangweize/Desktop/c.txt", "abcdefg");
    }
    public void saveFile(String fileName,String content) throws IOException
    {
        File file =new File(fileName);//访问该文件
        if(!file.exists())
        {       
            System.out.println("不存在");
            System.out.println(file.createNewFile());//创建新的文件
        }

            FileOutputStream fos = new FileOutputStream(file,true);//创建一个向具有指定name的文件中并在末尾写入数据的输出文件流。如果第二个参数为true,则将字节写入文件末尾处,而不是写入文件开始处

            OutputStreamWriter out =new OutputStreamWriter(fos,"utf-8"); //重写一个字节输出流,用“utf-8”格式写入
            BufferedWriter bw = new BufferedWriter(out);//创建out的缓冲流
            bw.write(content);
            bw.write("\r\n");
            bw.flush();
            System.out.println("写入成功!");


    }


}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.file.attribute.FileTime;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import org.junit.Test;


class Stu implements Serializable{
    private String name;
    private int age;
    private char sex;
    public Stu(String n,int a,char s){
        this.name = n;
        this.age = a;
        this.sex = s;
    }
    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;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    public String toString() {  
        return "Name:" + name + "/nAge:" + age + "/nSex:" + sex;     
     }
}

public class Demo{

    public static void main(String[] args) throws IOException {
    Stu s1 = new Stu("裸宇",25,'W');
    Stu s2 = new Stu("海河南",22,'W');

    Demo.serializable(s1);//序列化
    Demo.inserializable();// 反序列化


}
    public static void  serializable(Stu c) throws IOException {
        File file = new File("/Users/tangweize/Desktop/d.txt");
        if(!file.exists()) {
            System.out.print("不存在");
            file.createNewFile();
        }
        FileOutputStream filename = new FileOutputStream(file, true);
        ObjectOutputStream obo = new ObjectOutputStream(filename);

        obo.writeObject(c);
        obo.close();
        filename.close();
    }
    public static void  inserializable() throws IOException {
        File file = new File("/Users/tangweize/Desktop/d.txt");

        FileInputStream input = new FileInputStream(file);
        ObjectInputStream ois = new ObjectInputStream(input);

        try {
            Stu s = (Stu) ois.readObject();
            System.out.println(s.getName() + "age is " + s.getAge());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        ois.close();



    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值