• Java 文件系统与IO流


    文件系统

     java.io中的File类,用于处理文件。

    import java.io.File;  // 导入File类
    File myFile= new File("filepath.txt"); // 指定文件名, win为"path\filename"", linux是"path/filename"

    File包括了许多常用方法如exists(), canRead(), mkdir(), createNewFile(), delete(), ...而一般来说对于文件的操作最好放在try...catch...内以便抛出IOException。

    通过File可以得到文件的信息并在之后的IO中对文件内容进行操作

    Java IO

    参考自https://www.jianshu.com/p/e591ca6642e9

     数据在两设备之间的传输称为流,流的本质是数据传输,根据数据传输的特性将流抽象为各种类,方便进行更直观的数据操作。

    流分为两类,字节流和字符流/输入输出流。

    字符流:以字符为单位,只能处理纯文本的数据。本质其实就是基于字节流读取时,去查了指定的码表

    字节流:以字节(8bit)为单位,能处理所有类型的数据(如图片、.avi等)

    CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。

    CharArrayWriter、StringWriter 是两种基本的介质流,它们分别向Char 数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据。

    但是字符流貌似也不咋用,就不写例子了。

    输入流:InputStream,把数据从File里头拿到类里头去

    输出流:OutputStream,把数据从类里头拿出去

    ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。PipedInputStream是从与其它线程共用的管道中读取数据。
    ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据,
    图中虚线一般对应使用
    //FileInputStream&FileOutputStream流传文件
    InputStream in = new FileInputStream("d:\1.txt");
    //写入相应的文件
    OutputStream out = new FileOutputStream("d:\2.txt");
    //读取数据
    //一次性取多少字节
    byte[] bytes = new byte[2048];
    //接受读取的内容(n就代表的相关数据,只不过是数字的形式)
    int n = -1;
    //循环取出数据
    while ((n = in.read(bytes,0,bytes.length)) != -1) {
        //转换成字符串
        String str = new String(bytes,0,n,"GBK"); #这里可以实现字节到字符串的转换,比较实用
        System.out.println(str);
        //写入相关文件
        out.write(bytes, 0, n);
    }
    //关闭流
    in.close();
    out.close();
            //BufferedInputStream BufferedOutputStream 输入输出流
            //读取文件(缓存字节流)
            BufferedInputStream in = new BufferedInputStream(new         
            FileInputStream("d:\1.txt"));
            //写入相应的文件
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:\2.txt"));
            //读取数据
            //一次性取多少字节
            byte[] bytes = new byte[2048];
            //接受读取的内容(n就代表的相关数据,只不过是数字的形式)
            int n = -1;
            //循环取出数据
            while ((n = in.read(bytes,0,bytes.length)) != -1) {
                //转换成字符串
                String str = new String(bytes,0,n,"GBK");
                System.out.println(str);
                //写入相关文件
                out.write(bytes, 0, n);
            }
            //清楚缓存
            out.flush();
            //关闭流
            in.close();
            out.close();
  • 相关阅读:
    MapReduce教程(一)基于MapReduce框架开发<转>
    postgresql with递归
    mysql中递归树状结构<转>
    java获取上周任意一天的日期
    IBatis批量插入数据
    UI控件篇——UIPageControl及其自定义
    Android 3.0开始引入fragments(碎片、片段)类
    APACHE LOG4J™ 2
    java 反射
    PreparedStatement用途
  • 原文地址:https://www.cnblogs.com/tillnight1996/p/12322754.html
Copyright © 2020-2023  润新知