使用字节流读写文本文件
- 使用字节流类FileInputStream读文本文件
- FileInputStream 称为文件输入流,它是字节输入流 InputStream 抽象类的一个子类。
- 作用是将文件中的数据输入到内存中,读取文本中的数据
- 具体操作步骤如下
//导入相关的类
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
//构造一个文件输入流对象
InputStream fileObject=new FileInputStream("text.txt");
//利用文件输入流类的方法读取文本文件的数据
fileObject.available();//可读取的字节数
fileObject.read();//读取文件的数据
//关闭文件输入流对象
fileObject.close();
- 使用FileInputStream读取文本文件数据示例
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
public class FileInputStreamTest {
public static void main(String[] args){
FileInputStream fis = null;
try{
fis = new FileInputStream("d:\\tttest\\text.txt");
int data;
System.out.println("可读取的字节数:"+fis.available());
System.out.print("文件的内容为:");
while((data=fis.read())!=-1){
System.out.print((char)data+" ");
//read()方法返回的是整数,如果读取的是字符串,需要强制类型转换
}
}catch (IOException ioe){
System.out.println("出现错误");
ioe.getStackTrace();
}
try{
fis.close(); //当流为空时不可关闭流,会发出空指针异常
}catch (IOException ioe){
ioe.getStackTrace();
}
}
- 使用字节流FileOutputStream写文本文件
- FileOutputStream 称为文件输出流,它是字节输出流 OutputStream 抽象类的子类
- 作用是把内存中的数据输出到文件中,把内存中的数据写入到文本文件中
- 具体实现步骤如下
//引入相关的类
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
public class FileOutputStreamTest {
public static void main(String[] args){
OutputStream fos=null;
try{
//构造一个文件输出流对象
fos = new FileOutputStream("d:\\tttest\\FileOutputStreamTest.txt");
//此时的文件输出流对象fos就和目标源数据源(FileOutputStreamTest.txt文件)关联起来
//利用文件输出流的方法把数据写入到文本中
String str="今天也有好好学习的。";
byte[] words=str.getBytes();
//利用write方法将数据写入到文件中去
fos.write(words,0,words.length);
}catch (IOException ioe){
ioe.getStackTrace();
}
try{
//关闭文件输出流
fos.close();
}catch (IOException ioe){
ioe.getStackTrace();
}
}
}
默认情况下,向文件写数据时将覆盖文件中原有的内容
FileOutputStream fos=new FileOutputStream("d:\\tttest\\FileOutputStreamTest.txt",true);
第二个参数true,表示在文件末尾添加数据
并且如果FileOutputStreamTest.txt文件不存在,程序运行后,将首先创建此文件然后写入数据
- 使用注意:
- 在创建FileOutputStream实例时,如果相应的文件不存在,就会自动创建一个空的文件
- 如过参数file或name表示的文件路径存在,但是代表一个文件目录,则此时会抛出FileNotFoundException类型的异常
- 默认情况下,像文件写数据时将覆盖文件中原有的内容
使用字符流读写文本文件
- 使用字符流类 BufferedReader 和 FileReader 读文本文件
- BufferedReader 和 FileReader 两个类都是 Reader 抽象类的子类
- 可以通过字符流的方式读取文件
- 使用缓冲区,提高了读文本文件的效率
- 具体步骤如下
//引入相关的类
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
public class ReaderTest {
public static void main(String[] args){
//构造一个BufferedReader对象
FileReader fr=null;
BufferedReader br=null;
try{
fr=new FileReader("d:\\tttest\\filereadertest.txt");
br=new BufferedReader(fr);
//利用BufferedReader类的方法读取文本文件的数据
br.readLine(); //读取一行数据,返回字符串
}catch (IOException ioe){
ioe.getStackTrace();
}try{
//关闭相关的流对象
br.close();
fr.close();
}catch (IOException ioe){
ioe.getStackTrace();
}
}
}
- 使用BufferedReader类和FileReader类读取文本数据示例
//引入相关的类
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
public class ReaderTest {
public static void main(String[] args){
//构造一个BufferedReader对象
FileReader fr=null;
BufferedReader br=null;
try{
fr=new FileReader("d:\\tttest\\filereadertest.txt");
//将文件写入缓冲区,BufferedReader即为缓冲区
br=new BufferedReader(fr);
//利用BufferedReader类的方法读取文本文件的数据
String line=br.readLine();
//读取一行数据,返回字符串
while(line!=null){
//如果行不为空,打印行内容
System.out.println(line);
line=br.readLine();
}
}catch (IOException ioe){
ioe.getStackTrace();
}try{
//关闭相关的流对象
br.close();
fr.close();
}catch (IOException ioe){
System.out.println("文件不存在!");
ioe.getStackTrace();
}
}
}
- 使用字符流类 BufferedWriter 和 FileWriter 写文本文件
- BufferedWriter 和 FileWriter 都是字符输出流 Writer抽象类的子类
- 可以通过字符流的方式,通过缓冲区把数据写进文本文件中
- 提高了写文本文件的效率
- 具体步骤如下
//引入相关的类
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
public class WriterTest {
public static void main(String[] args){
//构造一个BufferedWriter对象
FileWriter fw=null;
BufferedWriter bw=null;
try{
fw=new FileWriter("d:\\tttest\\FileWriterTest.txt");
bw=new BufferedWriter(fw);
//利用BufferedWriter类的方法写文本文件
bw.write("test,test,are you ok?");
}catch (IOException ioe){
ioe.getStackTrace();
}
try{
//相关流对象的清空和关闭
bw.flush();
bw.close();
fw.close();
}catch (IOException ioe){
ioe.getStackTrace();
}
}
}
- 使用BufferedWriter 和 FileWriter 对象向文本文件中写数据,并将写入文件的数据读取出来显示在屏幕上
//引入相关的类
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
public class WriterTest {
public static void main(String[] args){
//构造一个BufferedWriter对象
FileWriter fw=null;
BufferedWriter bw=null;
try{
fw=new FileWriter("d:\\tttest\\FileWriterTest.txt");
bw=new BufferedWriter(fw);
//利用BufferedWriter类的方法写文本文件
bw.write("hello!");
bw.newLine();
bw.write("thank you!");
bw.newLine();
bw.write("are you ok?");
bw.newLine();
}catch (IOException ioe){
ioe.getStackTrace();
}
try{
//相关流对象的清空和关闭
bw.flush();
bw.close();
fw.close();
}catch (IOException ioe){
ioe.getStackTrace();
}
//将文件中的数据读取出来
FileReader fr=null;
BufferedReader br=null;
try{
fr=new FileReader("d:\\tttest\\FileWriterTest.txt");
br=new BufferedReader(fr);
String line=br.readLine();
while(line!=null){
System.out.println(line);
line=br.readLine();
}
}catch(IOException ioe){
ioe.getStackTrace();
}
try{
br.close();
fr.close();
}catch (IOException ioe){
ioe.getStackTrace();
}
}
}
本文详细介绍了如何使用Java的字节流(FileInputStream和FileOutputStream)以及字符流(BufferedReader和FileReader,BufferedWriter和FileWriter)进行文本文件的读写操作。内容包括读取、写入的具体步骤,以及使用注意点,如默认覆盖文件内容、追加写入等。

644

被折叠的 条评论
为什么被折叠?



