一、使用FileInputStream类读取文本文件的数据
package Test;
import java.io.FileInputStream;
import java.io.IOException;
/*
* 使用FileInputStream读取文本文件的数据
* 测试后结果是:不知道怎么能改成读取汉字的
* 最后一句*/
public class Test3 {
public static void main(String[] args) throws IOException {
//创建对象
FileInputStream fis=new FileInputStream("E:\\myDoc\\hello.txt");//这个程序不会自动写好这个文件
int date ;
System.out.println("可读取的字节数为:"+fis.available());
System.out.println("文件内容为:");
//循环读取数据
while((date=fis.read())!=-1){//date=fis.read())!=-1表示一个字节一个字节读这个文件,读到最后一个停止。
System.out.print ((char)date+"");//需要强制转换成char,否则文件中写入a会读出97.
}
//关闭流对象
fis.close();
}
}
二、使用FileOutputStream类向文本文件写入数据,该方法重写原来写入的内容会被覆盖
package Test;
//使用FileOutputStream类向文本文件写入数据,该方法重写覆盖
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class test4 {
public static void main(String[] args) throws IOException {
String str="好好学习 ";//要写的内容
byte[]words=str.getBytes();//字节数组
//创建流对象,以追加方式写入文件
FileOutputStream fos=new FileOutputStream("E:\\myDoc\\hello.txt");
fos.write(words, 0, words.length);//从输入输出流读取最多len的长度的字符,保存到字符数组c中,
//保存的位置从off开始,返回实际读取的字符长度
/*简单来说,write(byte[] b, int off, int len)就是将数组 b 中的 len 个字节按顺序写入输出流。
* 如果 b 为 null,则抛出 NullPointerException。如果 off 为负,或 len 为负,又或者 off+len 大
* 于数组 b 的长度,则抛出 IndexOutOfBoundsException。如果 len 为零,则不写入字节
* 否则,首先写入字节 b[off],然后写入字节 b[off+1],依此类推;最后一个写入字节是 b[off+len-1]。
* */
System.out.println("文件已更新");
fos.close();//关闭流
}
}
三、//使用字符流BufferedReader类 和FileReade类读取文本文件
package Test;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
//使用字符流BufferedReader类 和FileReade类读取文本文件
public class Test5 {
public static void main(String[] args) throws IOException {
try {
// 创建一个FileReader对象
FileReader fr = new FileReader("E:\\myDoc\\hello.txt");
// 创建一个BufferedReader对象
BufferedReader br = new BufferedReader(fr);
// 读取一行信息
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
// 关闭流
br.close();
fr.close();
} catch (Exception e) {
System.out.println("文件不存在");
}
}
}
四、//使用字符流BufferedWrite和FileWriter写文件,都是字符输出流的Write抽象下的子类。他们可以通过
//字符流的方式并通过缓冲区把数据写入文件,这也提高了写文本文件的效率。
package Test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//使用字符流BufferedWrite和FileWriter写文件,都是字符输出流的Write抽象下的子类。他们可以通过
//字符流的方式并通过缓冲区把数据写入文件,这也提高了写文本文件的效率。
public class Test6 {
public static void main(String[] args) throws IOException {
try {
//创建一个FileWriter对象那个
FileWriter fw=new FileWriter("E:\\myDoc\\hello.txt");
//创建一个BufferedWriter对象
BufferedWriter bw=new BufferedWriter(fw);
//写入信息
bw.write("大家好!") ;
bw.write("我正在学习BufferdeWriter");
bw.newLine();
bw.write("请多多指教");
bw.newLine();
bw.flush() ;//刷新缓冲区
fw.close();//
} catch (Exception e) {
System.out.println("文件不存在");
}
//读取信息---------------------------------------------------------------------------
try {
// 创建一个FileReader对象
FileReader fr = new FileReader("E:\\myDoc\\hello.txt");
// 创建一个BufferedReader对象
BufferedReader br = new BufferedReader(fr);
// 读取一行信息
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
// 关闭流
br.close();
fr.close();
} catch (Exception e) {
System.out.println("文件不存在");
}
}
}