021_IO流

IO流

I——input 输入

O——Output 输出

文件

File  所有文件类的父类

创建方式

File file = new File("文件路径");

文件对象常用的方法

1.获取文件路径(绝对路径    是带盘符的)
    file.getAbsolutePath();
2.获取文件名
    file.getName();
3.文件是否存在
    file.exists();// 有返回true没有返回false
4.创建文件
    file.createNewFile();// 此方法有异常需要抛
5.是否是文件夹
    file.isDirectory();// 是文件夹返回true,否返回false
    file.isFile();// 是文件返回true,否返回false
6.创建文件夹
    file.mkdir();

四个抽象类

  1. InputSteam
  2. OutputStream
  3. Reader
  4. Writer

InputSteam--------子类-------------》FileInputStream  文件输入流

1.读
    read()    // 每次读取一个字节,返回该字节的ASCII码值,当读到最后返回-1
读到数组里    read(byte[] bytes)// 把读取的字符,存在了byte[]里,返回的是实际个数。每次最多读取数组长度的个数

   byte[] bytes =new byte[1024];
    int len;// len为数组实际个数
    while((len = fis.read(bytes))!=-1){
        // 遍历数组
        for(int i = 0;i<len;i++){
            System.out.prin((char)bytes[i]);
        }
    }
    // 比如:数组长度为5,每次最多读5个,返回实际读取个数

按照传输单位划分:

InputSteam 和 OutputStream 字节流  传输的数据单位是字节

Reader 和 Writer 字符流  传输单位是字符

安保找流向划分:

输入流 外部输入到程序中,也叫“读”操作

输出流 程序中的内容输出到外部,也叫“写”操作

FileInputStream    字节输入流
// 文件对象
    File file = new File("...");
// 创建输入流
    FileInputStream fis = new FileInputStream(file);
int len;// 记录每个字符返回的ASCII码值
while((len = fis.read()) !=-1){// 等len为-1是退出循环
    // 不为-1,还有字符
    // 把ASCII码值再转成字符
    System.out.print((char)len);
}
FileOutputStream    字节输出流
write(int len)    // 每次写出实际的字符
write(bytes,off,len)// bytes 数组 off是从哪个下标写出去 len每次写多少个

文件的复制

创建两个文件对象,一个源文件,一个目标文件

创建输入流对象

创建输出流对象

每读一个字符 写出去

关闭流

try{
    
}finally{
    if(非空判断)
    file.close();
}

总结

处理字节流    // 应用于图片、英文文章、视频等大型字节文件
1.InputStream
    子类:FileInputStream
2.OutputStream
    子类:FileOutputStream
处理字符流    // 专门处理 纯文本文件(汉字文章等)
1.Reader
    子类:FileReader
2.Writer
    子类:FileWriter

猜你喜欢

转载自www.cnblogs.com/a276665092/p/12061663.html