您的位置:首页 > Web前端

Java基础巩固系列 Buffered(缓冲流)

2019-04-04 18:11 323 查看

代码示例:

[code]/*
*    抽象基类            节点流                 缓冲流(处理流的一种,可以提升文件操作的效率)
*   InputSteam       FileInputStream       BufferedInputStream
*   OutputSteam      FileOutputStream      BufferedOutputSteam (flush())
*   Reader           FileReader            BufferedReader
*   Writer           FileWriter            BufferedWriter   (flush())
* */
public class TestBuffered {

@Test
public void testBufferedReader() {
BufferedReader br = null;
BufferedWriter bw = null;
try {
File file = new File("aa.txt");
File file1 = new File("aa1.txt");
FileReader fr = new FileReader(file);
FileWriter fw = new FileWriter(file1);
br = new BufferedReader(fr);
bw = new BufferedWriter(fw);

//            char[] c = new char[1024];
//            int len;
//            while ((len = br.read(c)) != -1) {
//                String str = new String(c, 0, len);
//                System.out.println(str);
//            }
String str;
while ((str = br.readLine()) != null) {
System.out.println(str);
bw.write(str + "\n");
//                bw.newLine();
bw.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

@SuppressWarnings("all")
@Test
public void testCopyFile() {
long start = System.currentTimeMillis();
String src = "D:\\迅雷下载\\Linkin Park - Crawling (One More Light Live).mp4";
String dest = "D:\\迅雷下载\\2.mp4";
copyFile(src, dest);
long end = System.currentTimeMillis();
System.out.println("花费的时间:" + (end - start));//235
}

//使用缓冲流实现文件复制的方法
public void copyFile(String src, String dest) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
//1.提供读入、写出的文件
File file1 = new File(src);
File file2 = new File(dest);
//2.先创建相应的节点流:FileInputStream、FileOutputStream
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
//3.将创建的节点流的对象作为形参传递给缓冲流的构造器中
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
//4.具体的实现文件复制的操作
byte[] b = new byte[1024];
int len;
while ((len = bis.read(b)) != -1) {
bos.write(b, 0, len);
bos.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//5.关闭相应的流
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

//使用BufferedInputStream和BufferedOutputSteam实现非文本文件的复制
@Test
public void testBufferedInputOutputSteamStream() {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
//1.提供读入、写出的文件
File file1 = new File("1.png");
File file2 = new File("2.png");
//2.先创建相应的节点流:FileInputStream、FileOutputStream
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
//3.将创建的节点流的对象作为形参传递给缓冲流的构造器中
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
//4.具体的实现文件复制的操作
byte[] b = new byte[1024];
int len;
while ((len = bis.read(b)) != -1) {
bos.write(b, 0, len);
bos.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//5.关闭相应的流
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: