Java读文件操作可以用FileReader或BufferedReader,写文件操作用FileWriter或BufferedWriter。在实际操作中,经常使用BufferedReader和BufferedWriter来进行读写操作,所以只介绍BufferedReader和BufferedWriter的简单使用方法。
导包快捷键:Ctrl + shift + o 导包
BufferedWriter和BufferedReade使用方法
BufferedWriter提供了一种新的换行方法
public void newLine()
要追加写入:
将FileWriter fw = new FileWriter(“file03.txt”);
改为FileWriter fw = new FileWriter(“file03.txt”,true);//追加写入
public static void main(String[] args) throws IOException {
//首先创建一个普通的FileWriter对象,如果file03.txt这个文件没有创建就会自动创建
FileWriter fw = new FileWriter("file03.txt");
//将这个普通的FileWriter对象传递给BufferedWriter构造方法即可
BufferedWriter bw = new BufferedWriter(fw);
//后面bw的时候和fw没有区别
bw.write("古力娜扎");
bw.newLine();//自动根据操作系统选择换行符
bw.write("马尔扎哈");
//关闭流
bw.close();
}
BufferedReader提供了一个额外的方法,可以读取一整行字符串:
public String readLine(): 读取一整行字符串,返回值当中不包括换行符
public static void main(String[] args) throws IOException {
//首先创建一个普通的FileReader对象
FileReader fr = new FileReader("file03.txt");
//将其包装为BufferedReader
BufferedReader br = new BufferedReader(fr);
//读取单个字符
int ch; //代表单个字符
while((ch = br.read()) != -1)
{
System.out.println((char)ch);
}
//读取多个字符,就是从8192的缓冲区中取出多个字符
//注意(换行符也算字符)
char[] buf = new char[3];//一次取出3个字符
int len; //代表有效个数
while((len = br.read(buf)) != -1)
{
String str = new String(buf, 0 , len);
System.out.println(str);
}
//String line = br.readLine();//读取一整行字符串
String line;//代表一整行字符串
//按行读取整篇文章的内容
while((line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();
}
简单的例子
定义一个集合用于存储多个字符串 ,向其中添加一些字符串,然后将其写进文件中,要求每个字符串独占一行,再将文件中的字符串读到集合中,每一行为一个字符串元素。
步骤:
- 定义一个集合,创建一个ArrayList,用来存储多个字符串,也就是泛型是
- 向集合中添加字符串就是调用方法:add
- 写文件:FileWriter或BufferedWriter方法
- 每一个字符串要求占一行,使用newLine方法
- 关闭流
- 定义一个集合存放读取到的字符串:ArrayList
- 读文件 FileReader BufferedReader
- 读取一行:newLine
- 将读取到的字符串添到集合中:add
- 循环读取到null停止
- 关闭流
- 遍历最后得到的集合
public static void main(String[] args) throws IOException {
ArrayList<String> list1 = new ArrayList<>();//创建集合
list1.add("迪丽热巴");
list1.add("古力娜扎");
list1.add("马尔扎哈");
BufferedWriter bw = new BufferedWriter(new FileWriter("t1.txt"));
//遍历集合
for (int i = 0; i < list1.size(); i++) {
String a = list1.get(i);//获取当前字符串
bw.write(a);
bw.newLine();//换行
}
bw.close();//关闭流
ArrayList<String> list2 = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader("t1.txt"));
String line;//代表一整行字符串
while((line = br.readLine()) != null)
{
list2.add(line);//将读取到的字符串添加到集合中
}
br.close();
for (int i = 0; i < list2.size(); i++) {
System.out.println(list2.get(i));
}
}