I/O流##

作用:传输数据

分类:

按流向分类

输入流:给程序中传入数据

输出流:将程序中的数据输出

按输出的内容分类

字节流:传输的最小单位为字节(byte), 可以传输任何类型的数据

字符流:传输的最小单位为字符(char),只能传输文本

按功能分类

包装流:包装节点流,提供特有功能

节点流:从数据源到程序,不加工

字节流

顶级父类

InputStream:所有的字节输入流的父接口

提供的方法:
    int read():一次读取一个字节,返回值为读取到的字节
    int read(byte b[]):一次读一组字节,将读取到的数据存储到b数组中,返回值为读取到的字节长度,当返回值为-1表示结束
    int read(byte b[], int off, int len):一次读一组字节,从off位置开始存储,存储len个,返回值为读取到的字节长度,当返回值为-1表示结束
    void close():关流

OutputStream:所有的字节输出流的父接口

提供的方法
    void write(int b):一次写出一个字节
    void write(byte b[]):一次写入一组字节的内容
    void write(byte b[], int off, int len):一次写入一组字节的内容,从off位置开始输出,输出len个
    void flush():冲刷
    void close():关流

文件流 

文件输入流FileInputStream

文件输出流FileOutputStream

构造函数:
    FileOutputStream(String path);
        参数:
            path:写入的文件地址
    FileOutputStream(String path,boolean append);
        参数:
            path:写入的文件地址
            append:是否为追加模式
注意:
    不是追加模式:
        当文件不存在时,创建文件,只能创建一级文件
        当文件存在时,删除原有文件,重新创建
    是追加模式
        当文件不存在时,创建文件,只能创建一级文件
        当文件存在时,在原有基础上进行添加

内存流

作用:从内存中读取数据或向内存中写入数据

内存输入流:ByteArrayInputStream


内存输出流:ByteArrayOutputStream
默认大小:32字节
特有方法:
    toByteArray():获取内存输出流中的数据

缓冲流

作用:提高数据的读写效率,属于包装流

注意:默认缓冲区大小8kb

缓冲输入流:BufferedInputStream

缓冲输出流:BufferedOutputStream

注意:包装流在关闭时会关闭其包装的节点流

对象流

作用:将对象写入到指定位置或从指定位置读取对象

要求:对象所属的类必须实现序列化接口,包含类中的属性都要实现序列化接口(Serializable接口)

对象输入流:ObjectInputStream

特有方法:
    Object readObject();

对象输出流:ObjectOutputStream

特有方法:
    void writeObject(Object obj);

注意

存储的对象所在的类要实现序列化接口
static,transient不参与序列化
所有参与序列化的属性所属的类也要实现序列化接口
一次只能写入或读取一个对象 

字符流

概念:传输的最小单位为字符的流

注意:只能用于传输文本

Reader
作用:所有字符输入流的父类
提供的方法:
    int read()
    int read(char cbuf[])
    int read(char cbuf[], int off, int len)
    void close()

Writer
作用:所有字符输出流的父类
提供的方法:
    void write(int c)
    void write(char cbuf[])
    void write(char cbuf[], int off, int len)
    void write(String str):一次写入一个字符串
    void write(String str, int off, int len) 一次写入一个字符串的一部分,从off位置开始,写入len个
    void flush()
    void close()

分类

文件流


    FileReader:文件字符输入流
    FileWriter:文件字符输出流


缓冲流


    作用:提高代码读写效率
    BufferedReader
        特有方法:
            String readLine():一次读取一行,当返回值为null表示读取结束,返回值为读取到的字符串
    BufferedWriter
        特点方法:
            newLine():写入一个换行
    默认缓冲区大小:8192个字符
 

转换流


    作用:将字节输入流转换为字符输入流,将字符输出流转换为字节输出流
    InputStreamReader:将字节输入流转换为字符输入流
        构造函数:
            InputStreamReader(InputStream in, String charsetName)
            参数1:转换的字节流
            参数2:编码格式,与读取的数据编码格式一致
    OutputStreamWriter:将字符输出流转换为字节输出流
        构造函数:
            OutputStreamWriter(OutputStream out, String charsetName)
            参数1:转换的字节流
            参数2:编码格式,与写入的数据编码格式一致


标准输出流

   PrintStream,字节流 

于将数据输出到标准输出流(通常是控制台)。它是 OutputStream 的子类

File

构造函数

File(String pathname)
        参数:
            pathname:文件或文件夹地址
        如:
    new File("D:\新建文件夹\test_1.txt");D盘下新建文件夹下test_1.txt文件
    
File(String parent, String child)
参数:
    parent:父级文件夹地址
    child:文件或文件夹名称
    new File("D:\新建文件夹","test_1.txt");
    
File(File parent, String child)
参数:
    parent:父级文件夹
    child:文件或文件夹名称
    File f1 = new File("D:\新建文件夹");
    new File(f1,"test_1.txt");
    
File(URI uri)
参数:
    uri:文件地址对应的url对象
    URI uri = URI.create(文件地址);

        常用方法

  • String getName(): 返回文件或目录的名称。
  • String getPath(): 返回文件或目录的路径。
  • boolean exists(): 判断文件或目录是否存在。
  • boolean isDirectory(): 判断当前File对象是否表示一个目录。
  • boolean isFile(): 判断当前File对象是否表示一个文件。
  • long length(): 返回文件的大小(字节数)。
  • boolean canRead(): 判断文件或目录是否可读。
  • boolean canWrite(): 判断文件或目录是否可写。
  • boolean createNewFile(): 创建一个新文件。
  • boolean mkdir(): 创建一个新目录。
  • boolean delete(): 删除文件或目录。
  • boolean renameTo(File dest): 重命名文件或目录。

 

// 创建File对象
File file = new File("path/to/file.txt");

// 获取文件或目录的名称和路径
String name = file.getName();
String path = file.getPath();

// 判断文件或目录是否存在
boolean exists = file.exists();

// 判断当前File对象表示的是否是目录
boolean isDirectory = file.isDirectory();

// 判断当前File对象表示的是否是文件
boolean isFile = file.isFile();

// 获取文件的大小
long fileSize = file.length();

// 判断文件是否可读或可写
boolean canRead = file.canRead();
boolean canWrite = file.canWrite();

// 创建一个新文件
boolean newFileCreated = file.createNewFile();

// 创建一个新目录
boolean newDirCreated = file.mkdir();

// 删除文件或目录
boolean deleted = file.delete();

// 重命名文件或目录
File newFile = new File("path/to/newfile.txt");
boolean renamed = file.renameTo(newFile);

//获取系统路径分割符public static final String separator
String separator = File.separator;
System.out.println("路径分隔符: " + separator);

注意:

文件地址可以填写相对路径,也可以填写绝对路径

绝对路径:从盘符开始书写的文件路径
相对路径:相对于当前项目的位置(JavaSE项目中)
\:windows的路径分隔符
..:上一级文件夹
.:当前路径

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值