一、使用字节流读写文本文件
1、使用字节流类FileInputStream 读文本文件
InputStream 抽象类的常用子类 FileInputStream ,称为文件输入流 ,将文件中的数据输入到内存中,用于读取文本文件中的数据。
常用方法
主要步骤:
1、导入相关类,并抛出异常
2、构造一个文件输入流对象,将文件输入流对象 (fileInputStream )与源数据源(E:\\obge\\obgeTest.txt)关联起来
注意:要在路径 E:\\obge\\obgeTest.txt 下弄点数据,如帅气的obge
3、利用文件输入流类的方法读取文本中的文件内容
4、关闭流
实际运行结果
代码:
packagecom.obge.test2;importjava.io.FileInputStream;importjava.io.IOException;public classFileInputStreamStu {public static void main(String[] args) throwsIOException {//BufferedReader bufferedReader = new BufferedReader("E:\\obge\\obgeTest.txt");//创建流对象
FileInputStream fileInputStream = new FileInputStream("E:\\obge\\obgeTest.txt");intdata;//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、关闭流
运行结果
代码:
packagecom.obge.test2;importjava.io.FileOutputStream;importjava.io.IOException;public classFileOutPutStreamstu {public static voidmain(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、关闭流
运行结果
代码:
packagecom.obge.test2;importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;public classBufferedReaderStu {public static voidmain(String[] args) {try{//获取需要读取的文本文件的位置
FileReader fileReader = new FileReader("E:\\obge\\charstu.txt");//创建 BufferedReader 对象
BufferedReader bufferedReader = newBufferedReader(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 中自带的构造方法
代码:
packagecom.obge.test2;importjava.io.BufferedWriter;importjava.io.FileWriter;importjava.io.IOException;public classBufferedWriterStu {public static voidmain(String[] args) {try{//创建FileWriter 对象 和 数据源 E:\obge\charstu.txt 关联气力啊
FileWriter fileWriter = new FileWriter("E:\\obge\\charstu.txt",true);//创建bufferedWriter 对象
BufferedWriter bufferedWriter = newBufferedWriter(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("文件不存在!");
}
}
}