目录
1、字节流复制方法
//根据数据源创建字节流对象
FileInputStream fis = new FileInputStream("");
//根据目的地创建字符缓冲输出流对象
FileOutputStream fos = new FileOutputStream("");
//一个字节复制
int by;
while ((by=fis.read())!=-1){
fos.write(by);
}
//一个字节数组复制
byte[] bys = new byte[1024];
int len;
while ((len = fis.read(bys))!=-1){
fos.write(bys);
}
//释放资源
fis.close();
fos.close();
2、字节缓冲流复制方法
//根据数据源创建字节缓冲输入流对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream());
//根据目的地创建字节缓冲输出流对象
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream());
//一个字节复制方法
int by;
while ((by = bis.read()) != -1){
bos.write(by);
}
//一个字节数组复制方法
byte[] bys = new byte[1024];
int len;
while ((len=bis.read(bys))!=-1){
bos.write(bys,0,len);
}
//释放资源
bis.close();
bos.close();
3、字节缓冲流编码问题
//用什么编码就用什么解码,否则乱码
//默认编码utf-8
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(""),"GBK");
osw.write("中国");
osw.close();
InputStreamReader isr = new InputStreamReader(new FileInputStream(""),"GBK");
//一次读取一个字符数据
int ch;
while((ch=isr.read())!=-1){
System.out.print((char)ch);
}
isr.close();
4、字符流写数据
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(""));
//写一个字符
osw.write(97);
//刷新流,不刷新数据写不进
osw.flush();
//写入一个字符数组
char[] chs={'a','b','c','d','e'};
osw.write(chs);
//写入字符数组的一部分
osw.write(chs,0, chs.length);
osw.write(chs,1, 3);
//写一个字符串
osw.write("abcde",0,"abcde".length());
5、字符流读数据
//字符流读数据
InputStreamReader isr = new InputStreamReader(new FileInputStream(""));
//一次读一个字符数据
int ch;
while((ch=isr.read())!=-1){
System.out.print((char)ch);
}
isr.close();
//一次读一个字符数组数据
char[] chs = new char[1024];
int len;
while((len=isr.read(chs))!=-1){
System.out.println(new String(chs,0,len));
}
isr.close();
6、字符流复制方法
//根据数据源创建字符输入流对象
InputStreamReader isr = new InputStreamReader(new FileInputStream(""));
//根据目的地创建字符输出流对象
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(""));
//一次读写一个字符
int ch;
while ((ch = isr.read()) != -1) {
osw.write(ch);
}
//一次读写一个字符数组数据
char[] chs = new char[1024];
int len;
while ((len = isr.read(chs)) != -1) {
osw.write(chs, 0, len);
}
//释放资源
osw.close();
isr.close();
7、字符流的便捷类
转换流的名字比较长,我们常见的操作都是按照本地默认编码实现的,为了简化书写,转换流提供了对应的子类: FileReader(String fileName):用于读取字符文件的便捷类 FileWriter(String fileName):用于写入字符文件的便捷类
FileReader fr = new FileReader("");
FileWriter fw = new FileWriter("");
//一次读写一个数据
int ch;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
//一次读写一个字符数组
char[] chs = new char[1024];
int len;
while ((len = fr.read()) != -1){
fw.write(chs,0,len);
}
fr.close();
fw.close();
8、字符缓冲流使用
//根据目的地创建字符缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader(""));
//根据数据源创建字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(""));
bw.write("hello\r\n");
bw.write("world\r\n");
bw.close();
//一次读取一个字符数据
int ch;
while ((ch = br.read()) != -1){
System.out.println((char)ch);
}
br.close();
//一次读取一个字符数组数据
char[] chs = new char[1024];
int len;
while((len= br.read(chs))!=-1){
System.out.println(new String(chs,0,len));
}
br.close();
9、字符缓冲流复制方法
//根据数据源创建字符缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader(""));
//根据目的地创建字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(""));
//一次读写一个字符数据
int ch;
while ((ch = br.read()) != -1) {
bw.write(ch);
}
//一次读写一个字符数组数据
char[] chs = new char[1024];
int len;
while ((len = br.read(chs)) != -1) {
bw.write(chs, 0, len);
}
//释放资源
bw.close();
br.close();
10、字符缓冲流特有功能
BufferedWriter: void newLine():写一行行分隔符,行分隔符字符由系统属性定义 BufferedReader: public String readLine():读一行文字。结果包含行的内容的字符串,不包括任何行终止字符,如果流的结尾到此处,则为null
BufferedWriter bw = new BufferedWriter(new FileWriter(""));
for (int i = 0; i < 10; i++) {
bw.write("hello" + i);
bw.newLine();//换行
bw.flush();//刷新
}
bw.close();
BufferedReader br = new BufferedReader(new FileReader(""));
String line;
while((line = br.readLine())!=null){
System.out.println(line);
}
br.close();
11、字符缓冲流特有功能复制方法
//根据数据源创建字符缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader(""));
//根据目的地创建字节缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(""));
String line;
while((line = br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
br.close();