流 和序列化的使用 异常以及注意问题

./上一级


D:\\XXXX\\XXXX\\XX  或者:D:/XXX/XXX/XXX/XXX/XXXX

File file=new File("D:\\XXXX\\XXXX\\XX");
XXXX.mkdir();//创建目录

 File file=new File("D:\\XXXX\\XXXX\\XX");
    try{
        if(!file.extsts())//如果文件不存在,则创建
        //如果文件存在,则不会创建新文件
            file.createNewFile();//创建一个新文件
    }


InputStream:字节输入流(抽象类)
int read();
从输入流一个字节一个字节的读,返回的是该字节的整数表示形式
int read(byte[] b):
从输入流读取若干字节,把这些字节保存到数组b中,返回的是读取到的字节数,如果到了输入流的末尾,返回-1;
int read(byte[] b,int off,int len):
从输入流读取若干字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数目。返回的是读取到的字节数,如果到了输入流的末尾,返回-1;


一.字节流
字节输入流(读)
 InputStream 
    read()
    read(byte[])
    read(byte[],off,len)
    close()
 FileInputStream
    new  FileInputStream(File file)
    new  FileInputStream(String path)
字节输出流(写)
    OutputStream
        writr(int)
        writr(byte[])
        writr(byte[],off,len)
        close()
        flush()  强制将缓冲区清空
    FileOutputStream
        new  FileOutputStream(File file)
        new  FileOutputStream(String path)
        new  FileOutputStream(String path,boolean append):可以指定覆盖或追加文件内容
二    字符流
字符输入流(读)
    Reader(父)
        read()
        read(byte[])
        read(byte[],off,len)
        close()
    InputStreamReader(子):可以指定字符编码格式
        new InputStreamReader(InputStream)
        new InputStreamReader(InputStream,String charSetName)
    FileReader(孙)
        new  FileReader(File file)
        new  FileReader(String path)    
字符输出流(写)
    Writer
        Write(int ch)
        Write(byte[])
        close()
        fiush():清空缓存
    OutputStreamWriter(子):可以指定字符编码格式
        new OutputStreamWriter(OutputStream)
        new OutputStreamWriter(OutputStream,String charSetName)
    FileWriter(孙):以下两种构造,都可以重载,指定一个boolean类型的参数,用来指定追加还是覆盖文件
        new  FileWriter(File file)
        new  FileWriter(String path)
    BufferedWriter:带缓冲区的输出流
        flush()  强制将缓冲区清空
GBK   GB2312
UTF-8

        newLine();//换行输出

中文乱码 
    原因:文件编码格式   和程序环境的编码格式不一致

    解决方案:
    字符流去读的时候,指定字符流的编码格式

FileReader   无法指定编码格式,会按照文件系统默认编码格式读
System.out.println(System.getProperty("file.encoding"));


         缓冲流BufferedReader
    readLine()


读写二进制文件
    DataInputStream类输入流
        FileInputStream的子类
        与FileInputStream类结合使用读取二进制文件
    DataOutputStream类输出流
        FileOutputStream的子类
        与FileOutputStream类结合使用读取二进制文件

序列化和反序列化

序列化:将对象的状态写入到特定的流中的过程
反序列化:从特定的流中获取数据重新构建对象的过程

ObjectInputStream类输入流    反序列化  readObject()--》类型转换
ObjectOutputStream类输出流  序列化  writeObject(Object)

不想被序列化的属性前面加 transient 可以屏蔽这个属性

常见异常:
NotSerializableException:类没有实现Serializable接口无法实现序列化 只是一种能力并没有重写里面的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值