0828学习笔记(File、IO流)

File

删除功能
f1.delete(); 删除文件夹或者目录。

  • 绝对路径:完整的路径名,直接可以表示他做对应的文件。
  • 相对路径:需要使用其他路径信息对其经行解释。

删除注意事项

  • 如果一个目录中有内容(目录或者文件夹),就不能直接删除这个目录,必须将其内容删除后才可删除该目录。

IO流

概述

  • IO:输入输出
  • 流:抽象概念,数据传输的总称。数据在设备间的传输称为流,即流的本质是数据传输。
  • IO流用来处理数据传输。

分类

  • 按数据流向:输入流(读)、输出流(写)
  • 按数据类型:字节流(输入流、输出流)、字符流(输入流、输出流)

默认按照数据类型分。

字节流写数据
字节流抽象基类:

  • InputStream:输入流的超类
  • OutputStream:输出流的超类

FileOutputStream:文件输出流将数据写入File

//FileOutputStream(String name)创建文件输出流
FileOutputStream fo = new FileOutputStream("0828\\a.text");
//FileOutputStream(new File(name))创建文件输出流
FileOutputStream fos = new FileOutputStream(new File("0828\\a.text"));

  //写入文件输出流,一次写一个字节数据,
        fo.write(97);//a
        fo.write(57);//9
        fo.write(55);//7
        //写入byte数组
//      byte[] b = {44,67,89,89,98};
        byte[] b = "sowdvfdiog".getBytes();
        fo.write(b);
       //换行,系统记事本用\r
        fo.write("\n".getBytes());
        //输入指定位置的字节
        fo.write(b,0,b.length);

//释放资源
fo.close();

追加写入

FileOutputStream fo1 = new FileOutputStream("0828\\a.text",true)

默认在头部写,即重写文件,使用true,在文件尾部写,可实现追加写入。

异常处理(除了抛出异常外的处理方法)

FileOutputStream fo = null;
try {
    fo = new FileOutputStream("0828\\b.text", true);
    fo.write("woooooo".getBytes());
} catch (IOException e) {
    e.printStackTrace();
}finally {
    //如过路径不存在不能创建文件,那么文件就为null,fo.close();会空指针异常
    //提前处理
    if (fo != null) {
        try {
            fo.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

读取文件中的数据
按一个一个字节方式读取

        FileInputStream fi = new FileInputStream("0828\\a.text");
        //读一个字节a
        int read = fi.read();
        System.out.println(read);
        System.out.println((char)read);

        //第二次读
        int read1 = fi.read();
        System.out.println(read1);
        System.out.println((char)read1);

        //读取全部数据
//        int by = fi.read();
//        while (by != -1){
//            System.out.print((char)by);
//            //继续向下读取
//            by = fi.read();
//        }

        //优化读取全部数据,标准代码
        int by;
        while ((by = fi.read()) != -1)
            System.out.print((char)by);
        fi.close();

按一个一个字节数组的方式读取数据

byte [] bys = new byte[1024];//1024及其整数倍
int len;
while ((len=fi.read(bys))!=-1){
    //转成字符串输出
    System.out.print(new String(bys,0,len));
}

字节缓冲流
BufferOutputStream:缓冲输出流,应用程序可以像底层输出流写入字节,不必为每个写入的字节导致底层系统的调用。
BufferInputStream:创建一个内部缓冲区数组,可以一次很多字节。
构造方法:

  • 字节缓冲输出流:BufferedOutputStream(OutputStream out)
  • 字节缓冲输入流:BufferedInputStream(InputStream out)
  • 字节缓冲流只提供缓冲区,读写数据还是得依靠基本的字节流对象进行操作。
FileInputStream fi = new FileInputStream("E:\\a.txt");
FileOutputStream fo = new FileOutputStream("0829\\a.txt");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值