• JAVA IO流


    IO流的分类:输入流,输出流,字符流,字节流

    输入输出是相对内存而言的,硬盘到内存称为输入流,内存到硬盘成为输出流。

    字符流:按字符进行读取,只能操作普通文件(超文本文件txt),以Reader,Wirter结尾的io类都是字符流

    字节流:按字节8个比特位读取,操作所有文件,以Stream结尾的io类都是字节流

    使用注意:异常的处理,流的关闭close(),输出流每次输出时完成刷新管道flush()

    1.FileInputStream 字节输入流读取文件(常用版)

    1.1 常用IPA

    FileInputStream(File file): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。

    FileInputStream(String name): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。

    当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有该文件,会抛出FileNotFoundException 。

    public void close() :关闭此输入流并释放与此流相关联的任何系统资源。

    public abstract int read(): 从输入流读取数据的下一个字节。

    public int read(byte[] b): 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。

     1   public static void test01() throws Exception {
     2         FileInputStream fis = null;
     3         fis = new FileInputStream("OutTest.txt");
     4         byte[] readResult = new byte[10];//接收每次读取数据
     5         int readCount = 0;//每次读取数据位数
     6         //read()方法读取数据,返回读取的byte位数,-1表示已经读完
     7         while ((readCount = fis.read(readResult)) != -1) {
     8             System.out.println(new String(readResult, 0, readCount));
     9         }
    10         if (fis != null) {
    11             fis.close();
    12         }
    13     }

    2.FileOutoutStream字节输出流输出文件

    2.1构造方法

    public FileOutputStream(File file, boolean append): 创建文件输出流以写入由指定的 File对象表示的文件。

    public FileOutputStream(String name, boolean append): 创建文件输出流以指定的名称写入文件。

     2.2常用方法

    public void close() :关闭此输出流并释放与此流相关联的任何系统资源。

    public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。

    public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。

    public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。

     public static void test03() throws Exception {
            FileOutputStream fts = new FileOutputStream("OutTest.txt", true);//true表示追加,不然每次会先清空源文件
            String res = "我是一个中国人";
            byte[] bytes = res.getBytes();
            fts.write(bytes);
            fts.flush();
            fts.close();
        }

    3.利用BufferedReader带缓冲区字符输入流读取文件

     public static void test04() throws Exception {
    
            //  FileInputStream fis = new FileInputStream("OutTest.txt");
            // InputStreamReader isr=new InputStreamReader(fis);  //InputStreamReader流的转化
            // BufferedReader br = new BufferedReader(isr);      //处理流
    
            FileReader fr = new FileReader("OutTest.txt"); //节点流
            BufferedReader br = new BufferedReader(fr);      //处理流传入Reader类型的节点流
            String readContent = null;
            while ((readContent = br.readLine()) != null) System.out.println(readContent);
            br.close();
        }

    4.File类用IPA

    4.1构造方法

    public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

    public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。

    public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例

    4.2常用方法

    public String getAbsolutePath() :返回此File的绝对路径名字符串。

    public String getPath() :将此File转换为路径名字符串。

    public String getName() :返回由此File表示的文件或目录的名称。

    public long length() :返回由此File表示的文件的长度。

    public boolean exists() :此File表示的文件或目录是否实际存在。

    public boolean isDirectory() :此File表示的是否为目录。

    public boolean isFile() :此File表示的是否为文件。

    public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。

    public boolean delete() :删除由此File表示的文件或目录。

    public boolean mkdir() :创建由此File表示的目录。

    public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

    public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。

    public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。 

    5.拷贝整个文件目录

      /**
         * @param file 原目录
         * @param path 目的路径
         * @throws Exception
         */
        public static void test05(File file, String path) throws Exception {
            File outFile = new File(path);//目的目录是否存在,不存在就创建
            if (!outFile.exists()) {
                outFile.mkdir();
            }
            for (File fs : file.listFiles()) {//原目录下的所有文件以及目录。
                if (fs.isFile()) {//判断是否为文件
                    FileInputStream fis = new FileInputStream(fs);
                    FileOutputStream fos = new FileOutputStream(path + "//" + fs.getName(), true);
                    byte[] readBytes = new byte[1024];
                    int readCount = 0;
                    while ((readCount = fis.read(readBytes)) != -1) {//进行源文件的读取
                        fos.write(readBytes, 0, readCount);//写入到目的文件
                        fos.flush();
                    }
                    fis.close();
                    fos.close();
                } else {//不是文件就是目录,目录进行递归
                    test05(fs, path + "//" + fs.getName());
                }
            }

      

  • 相关阅读:
    【硬件】交换机与路由器概述
    【网络】IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解
    【网络】网桥
    【归档】Mysql大表归档
    【锁】Innodb锁
    【磁盘】顺序IO比随机IO快
    【硬盘】RAID卡
    【基础】占用空间大小(数据页、线程)
    【SQL】ON DUPLICATE KEY UPDATE
    【基础】Hint控制语句执行
  • 原文地址:https://www.cnblogs.com/miwujun/p/15107281.html
Copyright © 2020-2023  润新知