IO流
来源:互联网 发布:温饱而知廉耻 编辑:程序博客网 时间:2024/06/05 12:49
package com.java;
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importorg.junit.Test;
/*
* 重点!
* *抽象基类 节点流(或文件流) 缓冲流(处理流的一种,提高数据读写的效率)
* InputStream FileInputStream BufferedInputStream(read(byte[]b))
* OutputStream FileOutputStream BufferedOutputStream(write(b,0,len)/flush())
* Reader FileReader BufferedReader(read(char[] c)/ readLine())
* Writer FileWriter BufferedWriter(write(c,0,len)/write(Stringstr) flush())
*/
public classTestBuffered {
/*
* 结论:
* 对于文本文件:建议使用BufferedReader / BufferedWriter
* 对于非文本文件(图片、视频、二进制文件、pdf):BufferedInputStream / BufferedOutputStream
*/
@Test
public void testBufferedReaderWriter() {
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(newFileReader(new File("dbcp.txt")));
bw = new BufferedWriter(newFileWriter(new File("dbcp1.txt")));
//方式一:read(char[] c)
// char[] c = new char[20];
// intlen;
// while((len = br.read(c)) != -1) {
// bw.write(c,0, len);
// bw.flush();
// }
//方式二:readLine()
Stringstr;
while((str= br.readLine()) != null){
bw.write(str);
bw.newLine();
bw.flush();
}
核心代码
核心代码
} catch (FileNotFoundException e) {
// TODO Auto-generated catchblock
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catchblock
e.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
}
}
@Test
public void testCopyFile() {
long start =System.currentTimeMillis();
String src ="C:\\Users\\shkstart\\Desktop\\1.avi";
String dest ="C:\\Users\\shkstart\\Desktop\\3.avi";
copyFile(src, dest);
long end =System.currentTimeMillis();
System.out.println("花费的时间为:" + (end - start));// 4052
}
// 使用缓冲流实现文件复制的方法
public void copyFile(String src, Stringdest) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
// 1.创建File类的对象
File file1 = new File(src);
File file2 = new File(dest);
// 2.创建相应的节点流:FileInputStream 和 FileOutputStream
FileInputStream fis = newFileInputStream(file1);
FileOutputStream fos = newFileOutputStream(file2);
// 3.创建相应的缓冲流:BufferedInputStream 和 BufferedOutputStream
bis = newBufferedInputStream(fis);
bos = newBufferedOutputStream(fos);
// 4.具体的文件复制的操作:readwrite
byte[]b = new byte[1024];
intlen;
while((len = bis.read(b)) != -1) {
bos.write(b,0, len);
bos.flush();
}
} catch (IOException e) {
// TODO Auto-generated catchblock
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
}
// fos.close();
// fis.close();
}
/*
* 使用BufferedInputStream 和 BufferedOutputStream实现文件的复制
*/
@Test
public void testBuffered1() {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
// 1.创建File类的对象
File src = newFile("C:\\Users\\shkstart\\Desktop\\捕获.jpg");
File dest = newFile("C:\\Users\\shkstart\\Desktop\\捕获_1.jpg");
// 2.创建相应的节点流:FileInputStream 和 FileOutputStream
FileInputStream fis = newFileInputStream(src);
FileOutputStream fos = newFileOutputStream(dest);
// 3.创建相应的缓冲流:BufferedInputStream 和 BufferedOutputStream
bis = new BufferedInputStream(fis);
bos= new BufferedOutputStream(fos);
// 4.具体的文件复制的操作:read write
byte[] b = new byte[20];
intlen;
while((len = bis.read(b)) != -1) {
bos.write(b,0, len);
bos.flush();
}
} catch (IOException e) {
// TODO Auto-generated catchblock
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
}
// fos.close();
//fis.close();
}
}
- 【IO流】IO框架
- IO流呀IO流
- 字符IO&数据流IO&对象流IO
- io流
- io流
- IO流
- IO流
- IO 流
- IO流
- io流
- IO流
- io流
- IO流
- IO流
- IO流
- IO流
- IO流
- IO流
- ubuntu笔记4
- Ngrok的使用
- 【干货】如何有效地提问
- Android高性能编码实战:修复内存泄漏
- C/C++混编注意事项
- IO流
- 【Java】类名.class, class.forName(), getClass()区别
- 经典sql语句大全
- Python 进度条 tqdm
- UIViewController添加UICollectionView控件顶端出现留白的解决办法
- 安卓学习AIDL这篇就够了
- ZooKeeper级联删除javaAPI
- 响应式web-媒体查询
- jQuery替换url参数