标签:帮助 chm 文件 enc lis write bsp str 程序
在java程序中,数据的输入、输出操作以“流”的方式进行
数据源:data source 提供原始数据的原始媒介。常见的:数据库、文件、其他程序、内存、网络连接、IO设备。
流的分类:
流的方向:
输入流:数据源到程序(InputStream、Reader读进来)
输出流:程序到目的地(OutputStream、Writer写出去)
处理数据单元:
字节流:按照字节读取数据(InputStream、OutputStream)
字符流:按照字符读取数据(Reader、Writer)
功能不同:
节点流:可以直接从数据源或目的地读写数据。
处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装。目的主要是简化操作和提高性能。
节点流和处理流的关系:
节点流处于IO操作的第一线,所有操作必须通过他们进行
处理流可以对其他流进行处理(提高效率或操作灵活性)
字节流:InputStream 字节输出流的顶级类 OutputStream 字节输出流的顶级类
字符流: Writer 字符输入流的顶级类 Reader 字符输出流的顶级类
复制文件:
/**
* 功能:文件复制
* FileInputStrem FileOutputStrem
*
* 此法缺点:
* 中转站太小,此法复制大文件时,效率比较低下,
*/
public class TestCopy1 {
?
public static void main(String[] args) throws IOException {
//创建一个输入和输入流
// File file = new File("d:/BugReport.txt");
InputStream is = new FileInputStream(new File("d:/BugReport.txt"));
?
OutputStream os = new FileOutputStream(new File("d:\\BugReport2.txt"));
?
//使用输入流和输出流完成文件复制
int n; //中转站 ,比较小
//读一个字节
// n = is.read(); //从输入流读取一个字节赋值给n
while ((n= is.read()) != -1){ //没有读完
//写一个字节
os.write(n);
//接着读下一个字节
// n = is.read();
}
//关闭流
is.close();
os.close();
}
}
此方法缺点:当复制大文件时,复制效率低
改进:
/**
* 功能:提高文件复制效率
* 增加中转站容量
*/
public class TestCopy2 {
?
public static void main(String[] args) throws IOException {
//创建一个输入和输出流
InputStream fis = new FileInputStream("d:/JDK1.6 API帮助文档.CHM");
OutputStream fos = new FileOutputStream("d:/JDK1.6 API帮助文档2.CHM");
?
//使用输入流和输出流复制文件
//设置中转站
byte[] bytes = new byte[1024];
//读一次字节
int len = 0; //将源文件的内容读取到bytes中,返回真实读取到的字节数
while ((len=fis.read(bytes)) != -1){ //判断没有读完 -1表示已经读取完毕
//写一次字节
// fos.write(bytes); //写出1024字节流的内容
fos.write(bytes,0,len); // 写出0到len字节的内容
}
//关闭流
fis.close();
fos.close();
}
}
标签:帮助 chm 文件 enc lis write bsp str 程序
原文地址:https://www.cnblogs.com/lrc778/p/14820445.html