[java]13、缓冲流
1、字节缓冲输出流
java.io.BufferedOutputStream extends OutputStream
BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
public class Demo01OutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("a.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write("我吧树协议内部缓冲".getBytes());
bos.flush();
bos.close();
}
}
2、字节缓冲输入流
1)、java.io.BufferedInputStream extends InputStream
BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
public class Demo02InputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("/Users/shiji/study/java/itcast/day02-code/src/com/sj/demo01/BufferedStream/a.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
// int len = 0;
// while ((len = bis.read()) != -1) {
// System.out.println(len);
// }
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes)) != -1) {
System.out.println(new String(bytes , 0, len));
}
bis.close();
}
}
2)、copyFile
public class Demo02CopyFile {
public static void main(String[] args) throws IOException {
long b = System.currentTimeMillis();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("img.png"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("a.png"));
int len = 0;
// while ((len = bis.read()) != -1) {
// bos.write(len);
// }
byte[] bytes = new byte[1024];
while ((len = bis.read(bytes))!= -1) {
bos.write(bytes, 0, len);
}
bos.close();
bis.close();
long e = System.currentTimeMillis();
System.out.println(e - b);
}
}
3、字符缓冲输出流
java.io.BufferedWriter extends Writer
BufferedWriter:字符缓冲输出流
BufferedWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz) 创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
public class Demo03BufferedWriter {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
for (int i = 0; i < 10 ; i++) {
bw.write("你好啊aa");
// bw.write("\n");
bw.newLine(); // 换行
}
bw.flush();
bw.close();
}
}
4、字符缓冲输入流
java.io.BufferedReader extends Reader
BufferedReader:字符缓冲输入流
构造方法:
BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。
public class Demo04BufferedReader {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
// String line = br.readLine(); // 读取一行数据
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
5、练习给字符排序
/*
* 3.输出流上度
* 2.发送该消息的日期和时间
* 5.服务器域名、端口号
* 1.请求体的类型
* 4.能够接受的字符集
* */
public class Demo05Test {
public static void main(String[] args) throws IOException {
HashMap<String, String> map = new HashMap<>();
BufferedReader br = new BufferedReader(new FileReader("c.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("d.txt"));
String line;
while ((line = br.readLine()) != null) {
String[] arr = line.split("\\.");
// 把切割好的序号和文本内容存储到hashMap中(key序号是有序的,会自动排序1、2、3、4)
map.put(arr[0], arr[1]);
}
for (String key : map.keySet()) {
String value = map.get(key);
line = key + "." + value;
bw.write(line);
bw.newLine();
}
bw.close();
br.close();
}
}