为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第10天 通过I/O实现文件的读取与写入(上)

标签:
活动

课程名称:Java体系课

章节名称:通过I/O实现文件的读取与写入(上)

课程内容:

  • I(输入)/O(输出)
  • File类
  • 通过字节字符流实现文件读取与写入

学习收获:

  • I(输入)/O(输出)
    IO(输入/输出)是所有程序都必需的部分
    使用输入机制,允许程序读取外部数据(包括来自磁盘、光盘等存储设备的数据)、用户输入数据
    使用输出机制,允许程序记录运行状态,将程序数据输出到磁盘、光盘等存储设备中
  • java.io包
    Java的IO通过java.io包下的类和接口来支持
    按出入的方向可分为:输入(input)与输出(output)
    按内容类型可分为:字节流与字符流
  • File类
    File类是java.io包下代表与平台无关的文件和目录
    程序中操作文件和目录,都可用通过File类来完成,File能新建、删除、重命名文件和目录
    File类并不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流
    为了多平台兼容,文件路径间隔符建议使用反斜杠 /,如果用\需要两个\,转义字符
    类方法:
String	getPath()  //返回抽象路径名
boolean createNewFile() //创建文件,返回boolean值,如果文件已经存在则返回false,抛出 IOException异常
boolean exists() //返回boolean值,判断文件是否存在
boolean isDirectory() //判断是否为路径
boolean isFile() //判断是否为文件
long length() //返回文件大小
String getName() //获取文件名
boolean delete() //删除文件,返回boolean值
boolean mkdir() / mkdirs()  //创建单级或者多级目录,返回boolean值
  • 通过字节字符流实现文件读取与写入
    1.流——Stream
    Java把传输的数据抽象成流(Stream)的概念,简化了程序处理
    四种抽象类:字节输入流—InputStream;字节输出流—OutputStream;字符输入流—Reader;字符输出流—Writer
    2.字节输入流—InputStream
    InputStream是所有字节输入流的父类
    InputStream提供核心方法read(),用于读取字节数据
    FileInputStream类专用于读取二进制文件
    Closeable接口中只有一个close()方法用于关闭流并释放与之相关联的任何系统资源。
    3.字节输出流——OutputStream
    OutputStream是所有字节输出流的父类
    OutputStream提供核心方法write(),用于向指定输出流输出字节数组
    FileOutputStream类专用于写入二进制文件
    Flushable接口清空缓冲区的数据,并将数据写到文件中,当使用flush方法之后可以对文件进行操作;
    4.InputStream、OutputStream通用开发模式
public static void main(String[] args) {
        File source = new File("d:/demo.jpg");
        File target = new File("d:/demo1.jpg");
        InputStream fis = null;
        OutputStream fos = null;
        try {
            //实例化InputStream对象
            fis = new FileInputStream(source);
            //实例化Outputstream对象
            fos = new FileOutputStream(target);
            byte[] bs = new byte[1024];
            int len;
            //利用read方法循环读取的字节数据,并进行处理
            while((len = fis.read(bs)) != -1){
                System.out.println(len);
                //将读取到到字节数组写入到输出流
                fos.write(bs,0,len);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //通过finally块确保fis/fos对象执行close方法
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

课程截图

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
0
获赞与收藏
0

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消