java基础之io流

本文详细介绍了Java中的File类及其操作,包括文件的创建、判断和获取功能。接着,深入探讨了IO流的概念,指出字节流适用于非文本文件,字符流适合纯文本文件。文章还讲解了字节流、字节缓冲流、字符流、字符缓冲流的使用,以及转换流在字符编码转换中的作用。此外,还涉及了对象流操作,包括对象的序列化和反序列化,以及Properties集合在保存和加载流中的应用。
摘要由CSDN通过智能技术生成

File类

文件和目录可以通过File封装成对象

File类的构造方法

方法名 说明
File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例
File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例

路径
 绝对路径:是一个完整的路径,从盘符开始

 相对路径:是一个简化的路径,相对当前项目下的路径

File创建功能

方法名 说明
public boolean createNewFile() 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
public boolean mkdir() 创建由此抽象路径名命名的目录
public boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录

File创建功能

方法名 说明
public boolean delete() 删除由此抽象路径名表示的文件或目录

File类判断和获取功能

方法名 说明
public boolean isDirectory() 测试此抽象路径名表示的File是否为目录
public boolean isFile() 测试此抽象路径名表示的File是否为文件
public boolean exists() 测试此抽象路径名表示的File是否存在
public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串
public String getPath() 将此抽象路径名转换为路径名字符串
public String getName() 返回由此抽象路径名表示的文件或目录的名称
public File[] listFiles() 返回此抽象路径名表示的目录中的文件和目录的File对象数组

IO流

相对内存而言,输入流:从硬盘中读取数据到内存(读
输出流:从内存把数据保存到硬盘(写

IO流又分为 字节流和字符流。
如果操作纯文本文件,优先使用字符流,
如果操作图片、视频、音频等文件,优先使用字节流

字节流

字节流的抽象父类:InputStream 、 OutputStream

字节流写数据的三种方式

方法名 说明
void write(int b) 将指定的字节写入此文件输出流 一次写一个字节数据
void write(byte[] b) 将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据
void write(byte[] b, int off, int len) 将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据
//创建字节输出流
        FileOutputStream fos=new FileOutputStream(new File("E:\\aaa\\a.txt"));
        //第一种方法写void write(int b)
        fos.write(97);
        //第二种方法void write(byte[] b)
        byte[] b ={
   97,98,99};
        fos.write(b);
        //第三钟方法void write(byte[] b, int off, int len)
        fos.write(b,0,2);
        //释放资源
        fos.close();

注意事项:
字节流换行:
windows: \r\n
linux: \n
mac: \r

当文件不存在时,会自动创建,当文件存在时,会清空原文件内容。
如想追加内容,可以在构造的时候加多一个参数true.

字节流读数据的方式

      //创建输出流对象
        FileInputStream fis=new FileInputStream(new File("E:\\aaa\\a.txt"));
        //第一种方式:定义int变量获取读到的内容,
        int len=-1;
/*        while((len=fis.read())!=-1){
            System.out.println((char)len);
        }*/

        System.out.println("==============");
        //第二种方式:
        byte[] bytes = new byte[1024];
        while((len=fis.read(bytes))!=-1){
   
            System.out.println(new String(bytes,0,len));
        }
        System.out.println("=================");
        //第三种方式:
        while ((len=fis.read(bytes,0,2))!=-1){
   
            System.out.println(new String(bytes,0,len));
        }

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

字节缓冲流

缓冲流相当于内部有一个缓冲区数组,读写速度更快

方法名 说明
BufferedOutputStream(OutputStream out) 创建字节缓冲输出流对象
BufferedInputStream(InputStream in) 创建字节缓冲输入流对象
//BufferedOutputStream(OutputStream out)
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值