read() & write(int):
int read():从 输入流中 读取下一个字节,并以int 形式返回。如果读取到了流的末尾 返回 -1;
byte 1111 1111 -1
-1 & 0xff = 0xff = 255
用返回的int 类型的数据的 低 8位保存了 读取到的字节的数据。 为了避免和 流的末尾 -1 产生冲突
(byte)255 -1
write(int b): 将b 的低 八位 代表的字节数据 写入到 输出流中 (byte)b.
FileReader&&FileWrite:
FileReader :实现了 读取底层的字节数据,转换为字符数据的功能,依赖的字符集为 GBK。平台默认的解码
FileWriter: 实现了将字符数据 转换为 字节数据 的功能。依赖的字符集 也是 GBK 。平台默认的编码
package com.bjsxt.io0912;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileReaderWriterTest {
public static void main(String[] args) {
copyFile();
}
//复制文本数据
static void copyFile(){
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("./res/77.txt");
//文件如果不存在,会底层创建
fw = new FileWriter("./res/88.txt");
//读取一个字符,以字符的对应的整数值返回
// fr.read();
char[] buf = new char[10];
int count = fr.read(buf);
while(count != -1){
fw.write(buf, 0, count);
count = fr.read(buf);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(fr != null){
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fw != null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
flish():针对输出流 的方法。
作用:刷新缓冲区。将缓冲区中的数据写出到目的地。输出流关闭的时候也会将缓冲区中的内容写出到目的地。
BufferedReader&&BufferedWrite
带缓冲区的字符输入输出流:每一个流中都定义了一个 char[] 数组默认的缓冲区的大小为 8192 chars。
package com.bjsxt.io0913;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedReaderWriterTest {
public static void main(String[] args) {
copyFile();
}
//使用带缓冲区的字符流实现文本的复制
private static void copyFile(){
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader("./res/88.txt"));
bw = new BufferedWriter(new FileWriter("./res/99",true));
//读取一行 读取一行文本 当读取到了 \r\n的时候就立即返回读取到的改行的内容。
//换行的符号不会返回。读取到末尾 返回 null。
// String str = br.readLine();
// while(str != null){
// bw.write(str);
// //往输出流中写入一个系统的换行符
// bw.newLine();
// str = br.readLine();
bw.flush();
// }
String str = null;
while((str = br.readLine())!= null){
bw.write(str);
bw.newLine();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bw != null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}