FileInputStream称为文件输入流,它是字节输入流InputStream抽象类的一个子类,它的作用是将文件中的数据输入到内部存储器(简称内存)中,可以利用它来读取文本文件中的数据,具体实现步骤如下:
1)导入相关的类(导包)
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
2)构造一个文件输入流对象
InputStream fileObject = new FileInputStream("text.txt");//此时的文件输入流对象fileObject就和源数据源(text.txt)关联起来。
3)利用文件输入流类的方法读取文本文件中的数据
fileObject.available();//可读取的字节
fileObject.read();//读取文件的数据
4)关闭文件输入流对象
fileObject.close();
使用字节流类FileInputStream读文本文件的代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamTest {
public static void main(String[] args) throws IOException {
//创建一个File类对象
File file = new File("F:/test.txt");//括号中的字符串表示读取的文件的位置及文件名
//创建FileInputStream类对象
FileInputStream fileInputStream = new FileInputStream(file);
//通过fileInputStream对象调用方法从file对象指向的文件中读取数据
// int read(byte[] b)从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
//创建一个byte类型的数据
byte[] bytes = new byte[1024];
int num =fileInputStream.read(bytes);
System.out.println("从流中读取的字节数:"+num);
for (int i =0;i
FileOutputStream称为文件输出流,它是字节输出流OutputStream抽象类的子类,它的作用是把内存中的数据输出到文件中,可以利用它把内存中的数据写入到文本文件中,具体实现步骤如下:
1)导入相关的类
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
2)构造一个文件输出流对象
OutputStream fos = new FileOutnputStream("text.txt");//此时的文件输出流对象fos就和目标数据源(text.txt)关联起来。
3)利用文件输出流类的方法把数据写入到文本文件中。
String str = "好好学习Java";
byte[] words = str.getBytes();
fos.write(words,0,words,length);//利用write方法将数据写入到文件中去
4)关闭文件输入流对象
fos.close();
使用字节流FileOutputStream写文本文件的代码如下:
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamTest {
public static void main(String[] args) throws IOException {
FileOutputStream fileOutputStream = new FileOutputStream("F:/test.txt",true);
//通过fileOutputStream对象调用方法向F:/test.txt文件中写入数据
//将数据字符串“asdfghjkl”写入文件中
String str = "asdfghjkl";
//将字符串转换为byte类型的数组
byte[] bytes =str.getBytes();
fileOutputStream.write(bytes);
System.out.println("数据写入完毕");
//关闭流
fileOutputStream.close();
}
}
BufferedReader和FileReader两个类都是Reader抽象类的子类,它们可以通过字符流的方式读取文件,并使用缓冲区,提高了读文本文件的效率。读取文本文件的具体步骤如下:
1)导入相关的类
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
2)构造一个BufferedReader对象
FileReader fr = new FileReader("mytest.txt");
BufferedReader br = new BufferedReader(fr);
3)利用BufferedReader类的方法读取文本文件中的数据
br.readLine();//读取一行数据,返回字符串
4)关闭相关的流对象
br.close();//后开的流先关
fr.close();//先开的流后关
使用字符流类BufferedReader和FileReader读文本文件相关代码如下:
import java.io.*;
public class BufferedReaderTest {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream("F:/test.txt")));
//通过bufferedReader对象调用方法读取文件中的数据
String str1 = bufferedReader.readLine();
System.out.println(str1);
String str2 = bufferedReader.readLine();
System.out.println(str2);
String str;
while((str=bufferedReader.readLine())!=null){
System.out.println(str);
}
}
}
import java.io.FileReader;
import java.io.IOException;
public class FileReaderTest {
public static void main(String[] args) throws IOException {
FileReader fileReader = new FileReader("C:/test.txt");
//通过fileReader对象调用方法读取文件中的数据
int num;
while((num=fileReader.read())!=-1){
System.out.print((char)num);
}
}
}
BufferedWrite和FileWrite都是字符输出流Write抽象类的子类,它们可以通过字符流的方式并通过缓冲区把数据写入文本文件,提高了写文本文件的效率。把数据写入文本文件的具体操作步骤如下:
1)导入相关的类
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
2)构造一个BufferedWriter对象
FileWriter fw = new FileWriter("mytest.txt");
BufferedWriter bw = new BufferedWriter(fw);
3)利用BufferedWriter类的方法读取文本文件中的数据
br.write("hello");//读取一行数据,返回字符串
4)相关流对象的清空和关闭
bw.flush();
bw.close();//后开的流先关
fw.close();//先开的流后关
使用字符流类BufferedWrite和FileWrite写文本文件的代码如下:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class BufferWriterDemo01 {
public static void main(String[] args) {
//创建Writer对象
Writer writer = null;
//创建Buffered对象
BufferedWriter bufferedWriter = null;
try {
writer = new FileWriter("C:/test.txt");
bufferedWriter = new BufferedWriter(writer);
//通过bufferedWriter对象调用方法向文件中写入数据
bufferedWriter.write("你好世界!");
//写入一个行分隔符
bufferedWriter.newLine();
bufferedWriter.write("asdfg");
System.out.println("文件写入完毕");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo01 {
public static void main(String[] args) {
//创建FileWriter对象
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("C:/test.txt");
//通过fileWriter对象调用方法向文件中写入数据
fileWriter.write("hello world");
fileWriter.flush();
System.out.println("文件写入完毕");
} catch (IOException e) {
throw new RuntimeException(e);
}finally{
//判断fileWriter对象是否为null
if(fileWriter==null){
try {
fileWriter.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}