zoukankan      html  css  js  c++  java
  • 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("文件不存在!");
            }
    
    
        }
    }
  • 相关阅读:
    HDU 5835 Danganronpa 贪心
    HDU 5842 Lweb and String 水题
    HDU 5832 A water problem 水题
    Codeforces Beta Round #14 (Div. 2) A. Letter 水题
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem K. UTF-8 Decoder 模拟题
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem I. Alien Rectangles 数学
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem H. Parallel Worlds 计算几何
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem F. Turning Grille 暴力
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem C. Cargo Transportation 暴力
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
  • 原文地址:https://www.cnblogs.com/obge/p/12840016.html
Copyright © 2011-2022 走看看