1:字节流
(1)与字符流类似。InputStream
FileInputStream
BufferedInputStream
OutputStream
FileOutputStream
BufferedOutputStream
(2)字节流复制文件
A:复制文本文件
B:复制图片,视频,音频等二进制文件
(3)复制MP3,并测试时间。(四种方式复制mp3所用的时间)
2:转换流
(1)在操作字节流数据的时候,为了使用高效字符流的一些方法,
需要把字节流进行转换。这个时候java就提供了转换流。
(2)标准的键盘录入和控制台输出流对象
System.in -- InputStream
System.out -- PrintStream -- OutputStream(PrintStream的父类)
(3)字符流的由来
字符流 = 字节流 + 编码表
3:复制数据的操作规律
A:文本文件 -- 文本文件
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt");
String line = null;
while((line=br.readLine())!=null)
{
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
B:文本文件 -- 控制台输出
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=br.readLine())!=null)
{
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
C:键盘录入 -- 文本文件
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt");
String line = null;
while((line=br.readLine())!=null)
{
//如果数据源是键盘录入,一定要自定义结束标记
if("over".equals(line)
{
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
D:键盘录入 -- 控制台输出
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=br.readLine())!=null)
{
//如果数据源是键盘录入,一定要自定义结束标记
if("over".equals(line)
{
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
规律:
A:明确操作数据源和目的地的体系
数据源:
从数据源是读取数据
InputStream
Reader
目的地:
把数据写入到目的地
OutputStream
Writer
B:明确具体的数据源和目的地是否是文本文件
数据源:
是:Reader
不是:InputStream
目的地:
是:Writer
不是:OutputStream
C:明确操作的具体的数据所在地
数据源:
硬盘上的文本文件 FileReader
键盘录入数据(System.in) InputStream -- InputStreamReader
目的地:
硬盘上的文本文件 FileWriter
控制台输出(System.out) OutputStream -- OutputStreamWriter
FileReader
FileWriter
InputStreamReader
public InputStreamReader(InputStream in)创建一个使用默认字符集的 InputStreamReader。
字符流 = 字节流 + 编码表;
InputStreamReader
OutputStreamWriter
D:是否使用高效
是:用带Buffered流对象
不是:不用带Buffered流对象
BufferedReader br = new BufferedReader(数据源);
BufferedWriter bw = new BufferedWriter(目的地);
String line = null;
while((line=br.readLine())!=null)
{
//如果数据源是键盘录入,一定要自定义结束标记
if("over".equals(line)
{
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();