字符流与字节流的区别:字符流虽然以字节流为基础创建的,但是字节流可以支持声音,视频,图片,文本等所有文件类型,而字符流只支持文本文件。
字符输入流代码示例:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Demo5 {
public static void main(String[] args) throws IOException{
FileReader fr=new FileReader(new File("123.txt"));
char[] ca=new char[1024];
int count=0;
while((count=fr.read(ca))!=-1) {
System.out.println(new String(ca,0,count));
}
}
}
字符输出流代码示例:
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo6 {
public static void main(String[] args) throws IOException{
FileReader fr=new FileReader(new File("1.txt"));
FileWriter fw=new FileWriter(new File("2.txt"));
char[] ca=new char[1024];
int count;
while((count=fr.read(ca))!=-1) {
fw.write(ca,0,count);
}
fr.close();
fw.close();
}
}
带缓冲区的字符输出流:BufferedWriter:常用方法:writer(string)将字符串写入 到输出流。 newLine()根据系统的行分割符进行换行。
BufferedReader输入流、BufferedWriter输出流,代码示例
package Z.LIO;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class BufferCopyFile {
public static void main(String[] args) throws IOException {
//File f=new File("D:/代码/FileDemo002.java");
//BufferedReader字符流,读取文件
BufferedReader br=new BufferedReader(new FileReader("D:/代码/FileDemo002.java"));
String str=null;
while((str=br.readLine())!=null) {//一次读一行
System.out.println(str);
}
br.close();//关闭
//写入文件
//FileOutputStream fout=new FileOutputStream(file, append);
//append:true表示不覆盖原有文件在原有文件的基础上追加,默认是false 覆盖原有文件
BufferedWriter bw=new BufferedWriter(new FileWriter(new File("D:/代码/输出流.java"),true));
bw.write("你好,我是输出流.");
bw.flush();//刷新缓存区
bw.close();//关闭输出流
}
}
再加一个小需求!
如果有a.txt b.txt两个文件,我想把a文件和b文件内容合并,合并到a.txt,再删掉b.txt应该怎么做?
package Z.LIO.zuoye;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TxtHebing {
public static void main(String[] args) throws IOException {
/*1.a.txt b.txt
把a文件和b文件内容合并,合并到a.txt,再删掉b.txt*/
File fi=new File("D:/代码/B.txt");
fi.createNewFile();//新建空白文件
FileOutputStream fis=new FileOutputStream(fi);//创建输出流
String bb="我是b.txt的内容";
fis.write(bb.getBytes());//写入内容
BufferedReader ff2=new BufferedReader(new FileReader("D:/代码/B.txt"));
String str=null;
BufferedWriter ff1=new BufferedWriter(new FileWriter(new File("D:/代码/A.txt"),true));
while((str=ff2.readLine())!=null) {//一次读取一行
ff1.write(str+"\r\n");//写入
ff1.flush();//刷新缓存区
}
ff1.flush();//刷新缓存区
ff1.close();//关闭字符输出流
ff2.close();//关闭字符输入流
fis.close();//关闭输出流
fi.delete();//删除b.txt文件
//测试是否写入
BufferedReader ff3=new BufferedReader(new FileReader("D:/代码/A.txt"));
String str2=null;
while((str2=ff3.readLine())!=null) {//一次读取一行
System.out.println(str2);
}
ff3.close();//关闭字符输入流
}
}
别忘了看看思维导图.
本文共 470 个字数,平均阅读时长 ≈ 2分钟
评论 (0)