zoukankan      html  css  js  c++  java
  • (IO 一)

    IO

    IO(Input&Output)

    1. 内存中的数据存储到持久化设备上这个动作 称为输出(写)Output操作。
    2. 把持久设备上的数据读取到内存中的这个动作称为 输入(读)Input操作。

    File类

    • 当我们要操作系统的文件和文件夹的时候就需要使用 java.io包中的File类

    路径问题

    • 构造方法

      • File  (File  parent ,string  child)  从父抽象路径名和子路径名字符串创建心得File 实例
      • File  (String  pathname)  通过将给定的路径名字符串转换为抽象路径名来创新的File 实例
      • File  (String parent ,String child) 从父路径名字符串和子路径名字符串创建新的File 实例
    • 创建删除目录和文件

      • 创建文件功能File file = new File("d:\a\b\abc.txt"); boolean orSuccess = file.createNewFile();  
        • 创建过程中如果没有中间目录,系统会报错
        • 如果文件已经存在了,那么调用方法后的返回值是 false
        • 如果不指定后缀名默认还是创建的文件,不会创建 文件夹
        • 对于路径也可以写为d:/a/b/123.txt
      • 创建文件夹功能File file = new File("d:/abc/bcd");boolean orSuccess = file.mkdir();  
        • 只能创建1级文件夹,多级目录会报错
        • 如果要创建多层级目录需要使用file.mkdirs();
      • 删除文件或者文件夹File file = new File("d:/abc/bcd/a.txt"); boolean orSuccess = file.delete();  
        • 如果有中间目录删除会失败
        • 删除不会放进回收站
    • File的获取功能

      • file.getName() 通过路径的split("/")数组的最后 一个元素
      • file.getPath() 得到创建file的路径,创建file时的路 径是什么得到的就是什么
      • file.getAbsolutePath() 获取绝对路径,如果是file 中的路径是相对路径,得到的是相对于当前项目的绝对路径
      • file.getAbsoluteFile() 返回的是文件
      • file.length() 获取的是文件的字节数,long类型
      • file.getParent() 得到的是父目录,返回值是String 类型
      • file.getParentFile() 得到的是父目录,返回值是 file类型
    • File判断功能

      • 判断路径是否存在:File file = new File("d:/abc/bcd/a.txt");boolean exists = file.exists();
      • 判断是不是文件夹:File file = new File("d:/abc/bcd");boolean exists = file.isDirectory();
      • 判断是否是文件:File file = new File("d:/abc/bcd/a.txt");boolean exists = file.isFile();
    • 遍历目录

      • 遍历目录File file = new File("d:/Develop/eclipse");String[] list = file.list();返回值是字符串数组
      • 遍历目录File file = new File("d:/Develop/eclipse");File[] listFiles= file.listFiles();返回值File数组
      • 获取磁盘根目录File[] listRoots = File.listRoots();
    • 文件过滤器

      • 通过设置获取指定的文件类型
        • 通过调用file.listFiles(new FileFilter() {}); 创建一个FileFilter的文件过滤器
        • 重写抽象方法,当方法返回值是true的时候,添加进数组, 实现文件过滤的功能
      • 文件过滤原理

        • file.listFiles()每次获取到一个文件或者文件夹 的时候,就会调用对应接口的accept方法,将得到的这 个文件或者文件夹作为参数进行传递
        • accept()方法如果返回值是true,就将此文件或者文件 夹放入对应的数组中,所以我们可以用我们的代码进行 控制返回值是true还是false


    输出流和输入流

    • OutputStream

      • OutputStream叫做字节输出流,每次操作的是1个字节 (8位),因为计算机中最小的存储单位是字节,所以OutputStream可以写入任何文件。 
      • OutputStream此抽象类,是表示输出字节流的所有类的超类。操作的数据都是字节,定义了输出字节流的基本共性功能方法。
        • write(int b)写入一个字节
        • write(byte[] b)写入字节数组
        • write(byte[] b, int off, int len)写入字节数 组b,off表示从数组中哪个索引开始写,写多少个长度
        • close()关闭对象释放相应资源,有时如果不写close就 会造成文件一直被占用无法删除
    • FileOutputStream

      • FileOutputStream类,即文件输出流,是用于将数据写入 File的输出流

    写入流程

    1. 创建FileOutputStream指定输出地 址FileOutputStream fos = new FileOutputStream("d:/a.txt");,此代码还可以帮 助我们创建一个文件
    2. 如果路径中含有中间目录是无法写成功的
    3. fos.write(100);将100转换为2进制写入文件,会参照 对应ASCII码表
    4. 关闭输出流fos.close()

    写入方式

    • 写入一个字节 fos.write(100);
    • 写入一个字节数组byte[] bytes = {65,66,67};fos.write(bytes);
    • 写入一个字节数组中的一部分byte[] bytes = {65,66,67};fos.write(bytes,0,2);
    • 如果要写入一个字符串,可以通过字符串调用"大家 好".getBytes()方式将字符串转换为一个字节数组的 方式
    • 如果需要多次写入并且进行换行操作的话,需要添 加 ,因为在windows中默认的换行符
    • 如果需要每次写入内容是在当前文件的末尾添加,而不 是进行覆盖,就需要创建FileOutputStream的时候使 用FileOutputStream fos = new FileOutputStream("d:/a.txt",true);

    InputStream

      InputStream叫做字节输入流,每次操作的是1个字节(8 位),因为计算机中最小的存储单位是字节,所以 InputStream可以读取任何文件  

      InputStream此抽象类,是表示输入字节流的所有类的 超类。操作的数据都是字节,定义了读取字节流的基 本共性功能方法

    1. int read():读取一个字节并返回,没有字节返回­1.
    2. int read(byte[]): 读取一定量的字节数,并存储到 字节数组中,返回读取到的字节数。
    3. void close():关闭输入流

    FileInputStream

      即文件输入流,是用于将数据读取 到程序的输入流。

    • 构造方法

      • 读取方式

        • 读取单个字节
          read的返回值代表读取的内容   文件末尾的值为­1
        • 读取到字节数组
          read的返回值代表读取到了多少个有效字节   读取的内容放在byte中

          

  • 相关阅读:
    [Ubuntu]更改所有子文件和子目录所有者权限
    [ubuntu] 外挂硬盘
    HashMap、Hashtable、ConcurrentHashMap的原理与区别
    [Pytorch笔记] scatter_
    [The Annotated Transformer] Iterators
    [python 笔记] __iter__迭代器
    [负数在内存中的存储] 0x80000000 = -2147483648
    [NLP] The Annotated Transformer 代码修正
    [pytorch笔记] 调整网络学习率
    numpy中双冒号的作用
  • 原文地址:https://www.cnblogs.com/ZhuX-H/p/13479720.html
Copyright © 2011-2022 走看看