文件输入输出

1、区别于序列化,序列化会转换成二进制字节流,不可直接读取。FileWriter则将数据以文本文件的形式保存起来,其他非Java程序可读取。

2、File 可以认为是文件的路径,不是文件本身。提供一种比使用字符串文件名表示文件更安全的方式。代表这个文件,但是不能读取文件中的数据。

public static void saveData() {
        try {

            //不存在此文件就会被创建
            FileWriter writer = new FileWriter("texat.txt");
            writer.write("hello world");
            //写完后记得关闭
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3、file的使用:

  1. 创建出代表存盘文件的File对象:File f = new File("MyBook.txt");
  2. 创建目录:File dir = new File("Chapter8"); dir.mkdir();
  3. 列出目录下的内容:
    if(dir.isDirectory()){
        String[]  dirContents = dir.list();
        for(int i =0; i < dirContents.length; i++){
                sys(dirContents[i]);
           }
    }
     
  4. 取得文件或目录的绝对路径 dir.getAbsolutePath();
  5. 删除文件或目录: 成功返回true,boolean isDeleted = f.delete();

4、缓冲区,可以暂存内容,一直到存满,省下好多趟直接读写的时间

String aFile = "test.txt";
BufferedWriter writer = new BufferedWriter(new FileWriter(aFile));

//强制缓冲区立即写入
writer.flush();
BufferedInputStream是套在某个其他的InputStream外,起着缓存的功能,用来改善里面那个InputStream的性能(如果可能的话),它自己不能脱离里面那个单独存在。
FileInputStream是读取一个文件来作InputStream。所以你可以把BufferedInputStream套在FileInputStream外,来改善FileInputStream的性能。   
 
FileInputStream与BufferedInputStream区别:

FileInputStream是字节流,BufferedInputStream是字节缓冲流,使用BufferedInputStream读资源比FileInputStream读取资源的效率高(BufferedInputStream的read方法会读取尽可能多的字节),且FileInputStream对象的read方法会出现阻塞;

 

FileInputStream与FileReader区别:

FileInputStream是字节流,FileReader是字符流,用字节流读取中文的时候,可能会出现乱码,而用字符流则不会出现乱码,而且用字符流读取的速度比字节流要快;

 

ObjectOutputStream与ByteArrayOutputStream的区别:

ObjectOutputStream可以将java对象写入outputstream流中(序列化),然后进行持久化,此对象必须是实现了java.io.Serializable 接口;

ByteArrayOutputStream是将数据写入byte数组中;

BufferedWriter    用于读取文本文件或字符串合适
BufferedOutputStream   读取二进制流:

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值