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 读写文件的主要内容,如果未能解决你的问题,请参考以下文章
JavaNIO的深入研究4内存映射文件I/O,大文件读写操作,Java nio之MappedByteBuffer,高效文件/内存映射