java ------ I/O 读写文件

Posted 随风而逝.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:\\obge\\charstu.txt 关联气力啊
            FileWriter fileWriter = new FileWriter("E:\\\\obge\\\\charstu.txt",true);
            //创建bufferedWriter 对象
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
            //如果 E:\\obge\\charstu.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("文件不存在!");
        }


    }
}

 

以上是关于java ------ I/O 读写文件的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中文件的读写 I/O 输入输出流

Java I/O流详解与应用

Java笔记:非阻塞I/O

JavaNIO的深入研究4内存映射文件I/O,大文件读写操作,Java nio之MappedByteBuffer,高效文件/内存映射

java I/O

Java笔记:流I/O