• java ------ I/O (四) 读写文本文件


    一、使用字节流读写文本文件

    1、使用字节流类FileInputStream 读文本文件

    InputStream 抽象类的常用子类 FileInputStream ,称为文件输入流 ,将文件中的数据输入到内存中,用于读取文本文件中的数据。

    常用方法

    主要步骤:

    1、导入相关类,并抛出异常

    2、构造一个文件输入流对象,将文件输入流对象 (fileInputStream )与源数据源(E:\obge\obgeTest.txt)关联起来

      注意:要在路径 E:\obge\obgeTest.txt  下弄点数据,如帅气的obge

    3、利用文件输入流类的方法读取文本中的文件内容

    4、关闭流

    实际运行结果

    代码:

    package com.obge.test2;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class FileInputStreamStu {
        public static void main(String[] args) throws IOException {
            //BufferedReader bufferedReader = new BufferedReader("E:\obge\obgeTest.txt");
            //创建流对象
            FileInputStream fileInputStream = new FileInputStream("E:\obge\obgeTest.txt");
            int data;
            //available()   可读取的字节数
            System.out.println("可读取的字节数:"+fileInputStream.available());
            System.out.println("文件内容为:");
            //循环读取内容
            while((data = fileInputStream.read())!= -1){
                System.out.println(data +"");
            }
            //关闭流对象
            fileInputStream.close();
        }
    
    }

    2、使用字节流类FileOutStream 写文本文件

    OutStream   抽象类的常用子类 FileOutStream ,称为文件输出流,用于把文件中的数据输出到文件中,就是把内存中的数据写到指定的文本文件中。

    常用方法:

     主要步骤:

    1、导入相关类,并抛出异常

    2、构造一个文件输出流对象,将文件输出流对象 (fileOutPutStream)与源数据源(E:\obge\obgeTest.txt)关联起来

      注意:当obge 文件下没有 obgeTest.txt 这个文件时,会先创建此文件然后在写数据,有 obgeTest.txt 这个文件的话,默认情况下会覆盖原有文件中的内容,第二个参数 true 的作用就是像文件末尾中添加数据,

    3、利用文件输出流类的方法将数据写入到文本文件中

    4、关闭流

    运行结果

     代码:

    package com.obge.test2;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class FileOutPutStreamstu {
    
        public static void main(String[] args) {
            try {
                String str = "obge帅";
                //放到字节数组里
                byte[] words = str.getBytes();
                //创建流对象,当obge 文件下没有 obgeTest.txt 这个文件时,会先创建此文件然后在写数据。
                //如果obge 文件下有 obgeTest.txt 这个文件,默认情况下会覆盖原有文件中的内容,第二个参数 true 的作用就是像文件末尾中添加数据
                FileOutputStream fileOutPutStream = new FileOutputStream("E:\obge\obgeTest.txt",true);
                //写入文件
                fileOutPutStream.write(words,0,words.length);
                System.out.println("文件已更新");
                //关闭流
                fileOutPutStream.close();
    
            }catch (IOException e){
                System.out.println("文件创建出错"+e.getMessage());
            }
    
        }
    
    
    }

    当然你要想看看报错

    二、使用字符流读写数据 

    1、使用字符流类BufferedReader 和 FileReader 读取文本文件

    BufferedReader 和 FileReader 时抽象类 Reader 的子类,通过字符流的方式读取文件,并使用了缓冲区,提高了读取文本文件的效率。

    常用方法:

     主要步骤:

    1、导入相关类,并抛出异常

    2、将对象 (fileReader)与源数据源(E:\obge\charstu.txt)关联起来

      注意:要在路径 E:\obge\obgeTest.txt  下弄点数据,如帅气的obge

    3、创建 BufferedReader 对象,将fileReader放入其中

    4、利用BufferedReader类的方法读取文本中的文件内容

    5、关闭流

    运行结果

     代码:

    package com.obge.test2;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class BufferedReaderStu {
        public static void main(String[] args) {
            try {
                //获取需要读取的文本文件的位置
                FileReader fileReader = new FileReader("E:\obge\charstu.txt");
                //创建 BufferedReader 对象
                BufferedReader bufferedReader = new BufferedReader(fileReader);
                //读取一行数据
                String strLine = bufferedReader.readLine();
                //不为空就打印出charstu.txt  里面的东东
                while (strLine != null){
                    System.out.println(strLine);
                    strLine = bufferedReader.readLine();
                }
                //关闭流 从里到外关闭
                bufferedReader.close();
                fileReader.close();
            }catch (IOException e){
                System.out.println("文件不存在");
            }
        }
    
    }

    2、使用字符流类BufferedWriter 和 FileWriter 写文本文件

    BufferWriter 和 FileWriter 是抽象类 Writer的子类,通过字符流的方式把数据写到文本文件中,并使用了缓冲区,提高了写文本文件的效率。

    常用方法:

     主要步骤:

    1、导入相关类,并抛出异常

    2、将对象 (fileReader)与源数据源(E:\obge\charstu.txt)关联起来

      注意:如果没有使用第二的参数为true,会覆盖原有数据

    3、创建 BufferedReader 对象,将fileReader放入其中

    4、利用BufferedReader类的方法读取文本中的文件内容

    5、关闭流

    运行结果

    使用BufferedWriter 类如何追加内容?

    发现原来的数据没有了,怎么办,就是在没有使用FileWriter 中的,允许追加字符串的多参构造方法

     当然也有别的方法:  利用 BufferedWriter 中自带的构造方法

    代码:

    package com.obge.test2;
    
    
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class BufferedWriterStu {
        public static void main(String[] args) {
            try {
                //创建FileWriter 对象 和 数据源 E:obgecharstu.txt 关联气力啊
                FileWriter fileWriter = new FileWriter("E:\obge\charstu.txt",true);
                //创建bufferedWriter 对象
                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                //如果 E:obgecharstu.txt 中有两行,就加一个newLine();
                bufferedWriter.newLine();
                //写入信息
                bufferedWriter.write("新增第一行!");
                bufferedWriter.write("不我也是新增的第一行");
                //写入新一行数据 俗称换一行写
                bufferedWriter.newLine();
                bufferedWriter.write("The second line");
                //刷新缓冲区
                bufferedWriter.flush();
                //关闭流  从里到外关闭
                fileWriter.close();
                bufferedWriter.close();
                System.out.println("文件写入成功");
            }catch (IOException e){
                System.out.println("文件不存在!");
            }
    
    
        }
    }
  • 相关阅读:
    爬取动态html网页,requests+execjs
    pycharm2019.2一个奇怪的bugger,执行后输出内容被莫名处理
    博客园啥时候升级了,刚看到
    在浏览器的市场上,IE依然是放弃了,firefox还在继续~~
    jetbrain rider 逐渐完美了,微软要哭了么?
    div层的滑入滑出实例
    关于js的<、>、=、<=、>=的比较
    Jquery实现左右轮播效果
    Html5离线缓存详细讲解
    CANVAS画布与SVG的区别
  • 原文地址:https://www.cnblogs.com/obge/p/12840016.html
Copyright © 2020-2023  润新知