zoukankan      html  css  js  c++  java
  • 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());
                }
            }

      

  • 相关阅读:
    day 66 ORM django 简介
    day 65 HTTP协议 Web框架的原理 服务器程序和应用程序
    jQuery的事件绑定和解绑 事件委托 轮播实现 jQuery的ajax jQuery补充
    background 超链接导航栏案例 定位
    继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素
    属性选择器 伪类选择器 伪元素选择器 浮动
    css的导入方式 基础选择器 高级选择器
    03-body标签中相关标签
    Java使用内存映射实现大文件的上传
    正则表达式
  • 原文地址:https://www.cnblogs.com/miwujun/p/15107281.html
Copyright © 2011-2022 走看看