zoukankan      html  css  js  c++  java
  • IO流_字符流

    IO流_字符流

    /**
     * 一、流的分类:
     * 1.操作的数据单位:字节流、字符流
     * 2.数据的流向:输入流、输出流
     * 3.流的角色:节点流、处理流
     *
     * 二、流的体系结构
     * 抽象基类             节点流(或文件流)            缓冲流(处理流的一种)
     * InputStream         FileInputStream           BufferedInputStream
     * OutputStream        FileOutputStream          BufferedOutputStream
     * Reader              FileReader                BufferedReader
     * Writer              FileWriter                BufferedWriter
     */
    

    FileReader

    示例代码:

    public class testFileReader {
        /*
        说明点:
        1.read()的理解:返回读入的一个字符,如果达到文件末尾,返回-1
        2.异常的处理:为了保证流资源一定可以执行关闭操作,需要使用try-catch-finally处理
        3.读入的文件一定要存在,否则就会报FileNotFoundException异常
         */
        public static void main(String[] args){
            FileReader fileReader = null;
            try {
                //将a.txt读入内存中并输出到控制台
                //1.实例化File类的对象  指明要操作的文件
                File file = new File("基础语法\a.txt");  //相对路径  相较于当前工程
                //2.提供具体的流
                fileReader = new FileReader(file);
                //3.数据的读入
                //read()  返回读入的一个字符,如果达到文件末尾 返回-1
    //        int read = fileReader.read();
    //        while (read != -1){
    //            System.out.print((char) read);
    //            read = fileReader.read();
    //        }
                int read = 0;
                while ((read != fileReader.read())){
                    System.out.print((char) read);
                    read = fileReader.read();
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    //4.流的关闭操作
                    if (fileReader != null)
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    public class testFileRead2 {
        //对read()操作升级  使用read()重载方法
        public static void main(String[] args){
            FileReader fileReader = null;
            try {
                //1.实例化File类的实例化
                File file = new File("基础语法\a.txt");
                //2.FileReader流的实例化
                fileReader = new FileReader(file);
                //3.读入操作
                //read(char[] cbuf)  返回每次读入cbuf数组中的字符的个数,如果达到文件末尾,返回-1
                char[] cbuf = new char[4];
                int len;
                while((len = fileReader.read(cbuf)) != -1){
    //                //方式一
    //                for (int i = 0; i <len ; i++) {
    //                    System.out.print(cbuf[i]);
    //                }
                    //方式二
                    String str = new String(cbuf,0,len);
                    System.out.print(str);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fileReader != null)
                    //4.资源的关闭
                {
                    try {
                        fileReader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    

    FileWriter

    示例代码:

    /*
    从内存中写出数据到硬盘的文件里。
    
    说明:
    1.输出操作,对应的File文件可以不存在,并不会报异常
    2.
        File对应的硬盘中的文件如果不存在,再输出过程中会自动创建此文件
        FIle对应的硬盘中的文件如果存在
            如果流使用的构造器是:FileWriter(file,false) 或者 FileWriter(file)
                是对原有文件的覆盖
            如果流使用的构造器是:FileWriter(file,true)
                不会对原有文件覆盖,而是在原有文件基础上追加内容
    
     */
    public class testFileWriter {
        public static void main(String[] args)  {
            FileWriter fileWriter = null;
            try {
                //1.提供file类的对象,知名写出到的文件
                File file = new File("基础语法\b.txt");
    
                //2.提供FileWriter的对象,用于数据的写出
                fileWriter = new FileWriter(file,false);
    
                //3.写出的操作
                fileWriter.write("i have a dream
    ");
                fileWriter.write("you need to have a dream");
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fileWriter != null)
                    //4.流资源的关闭
                {
                    try {
                        fileWriter.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
        }
    }
    

    FileReaderAndFileWriter

    public class testFileReadAndFileWriter {
        public static void main(String[] args) {
            FileReader fileReader = null;
            FileWriter fileWriter = null;
            try {
                //1.创建file类对象,指明读入和写出的文件
                File src = new File("基础语法\a.txt");
                File dest =new File("基础语法\c.txt");
                //2.创建输入流和输出流的对象
                fileReader = new FileReader(src);
                fileWriter = new FileWriter(dest);
                //3.数据的读入和写出操作
                char[] cbuf = new char[4];
                int len; //记录每次读入到cbuf数组中字符的个数
                while ((len = fileReader.read(cbuf)) != -1){
                        //每次写出len个字符
                        fileWriter.write(cbuf,0,len);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                //4.关闭流资源
                try {
                    if (fileWriter != null)
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    if (fileReader != null)
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
  • 相关阅读:
    ActiveJDBC 学习笔记
    selenium相关技术研究(从1.0-3.0)
    如何记录selenium自动化测试过程中接口的调用信息
    TestNG进行接口测试,脚本及可维护性框架
    贪多必失,精通一样再往下一样
    测试开发之路:英雄迟暮,我心未老
    接口测试面试题
    自动化测试中的滚动
    maven配置环境变量失败解决办法
    注释——创建新的类(文件)时,自动添加作者创建时间(文件注释)等信息的设置方法
  • 原文地址:https://www.cnblogs.com/qiudajiang/p/13273750.html
Copyright © 2011-2022 走看看