欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA IO流学习总结----字节流 博客分类: java java、IO流 

程序员文章站 2024-03-19 10:25:34
...
何为IO流?形象点就如同水流一般,专业点讲它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出。
  按照操作单元划分,可以划分为字节流和字符流。字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。

FileInputStream:字节输入流,指数据从磁盘读到计算机内存中。父类:InputStream
FileOutputStream:字节输出流,指数据从计算机内存写入到磁盘中。父类:OutputStream


1.FileInputStream应用:
  public void testFileRead() throws IOException{
File file = new File("E:\\java.txt");
FileInputStream fis = new FileInputStream(file);
int i = 0;
while((i = fis.read())!=-1){
System.out.print((char)i);
}
fis.close();
}

2.FileOutputStream 应用:
  public void testFileWrite() throws IOException{
File file = new File("E:\\java.txt");
String str = "123哈哈哈";
//建立通道,true  内容追加到文件中
FileOutputStream fos = new FileOutputStream(file,true);
//打开水龙头
fos.write(str.getBytes());
//关闭水龙头
fos.close();
}


3.通过字节流进行文件复制

思路:1.先通过FileInputStream 将文件内容读到内存
      2.再通过FileOutStream讲文件内容写入到目标磁盘
      3.关闭IO流
注:大文件可以通过BufferedInputStream和BufferedOutStream进行操作

例:拷贝2.21G的数据库文件,耗时77秒
public static void main(String[] args) throws IOException {
// 输入流:将数据库文件存到计算机内存中
FileInputStream fis = new FileInputStream("F:\\20190712.dmp");
BufferedInputStream bis = new BufferedInputStream(fis);

// 输出流 :将数据库文件从计算机内存 复制 到D盘
FileOutputStream fos = new FileOutputStream("D:\\20190712.dmp");
BufferedOutputStream bos = new BufferedOutputStream(fos);

byte[] buffer = new byte[2048];
int len = 0;
long startTime = System.currentTimeMillis(); // 获取开始时间
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
long endTime = System.currentTimeMillis(); // 获取结束时间
System.out.println("文件复制耗时:" + (endTime - startTime) / 1000 + "秒!");
// 关闭IO流:关闭原则 先关闭输入流 再关闭输出流
bis.close();
fis.close();
bos.close();
fos.close();

}
相关标签: java、IO流