Java中流的学习总结(1)

1、 File类的作用:
a) 在File中只是涉及到文件和文件夹的最基本的操作,比如如何创建、删除、重命名等。
b) 在创建File对象是涉及到了文件存储路径的问题:
i. 绝对路径:包括盘符在内的完整的文件路径。
ii. 相对路径:在当前文件目录下的文件的路径。
c) File类中的常见的方法中的注意事项:
i. File1.renameTo(file2):File1重命名为File2,要求就是File1一定要存在,而File2一定不存在。File1和File2可以是文件也可以是文件夹。
ii. mkdir()和mkdirs()的区别:
1. mkdir():创建一个文件目录,如果上层的文件目录存在,就可以创建。
2. nkdirs(): 创建一个文件怒路,如果上层的文件目录不存在,就可以一并创建。
2、 IO流的说明:
a) Input和Output的区别:
i. Input:从外部数据到程序中。
ii. Output: 从程序输出到外部。
b) IO流的分类:
i. 按照传送的数据单位来分:分为字节流(8bit)、字符流(16bit)
1. 字节流主要就是用于处理非文本文件。
a) 字节流
2. 字符流主要就是用于处理文件文件。
ii. 按照流的流向可以分为:输入流和输出流。
iii. 按照流的角色不同可以分为:节点流和处理流。
1. 节点流:程序直接将流对到文件上的流称为节点流。
a) 常用的节点流有:FileInputStream \ FileOutputStream \ FileReader \ FileWriter
2. 处理流:在节点流外部再包多一层流,添加额外的功能。
a) 常见的处理流就是:BufferedInputStream \BufferedOutputStream \BufferedReader\ BufferedWriter
iv. 体系说明:
抽象基类 InputStream OutputStream Reader Writer
节点流 FileInputStream FileOutputStream FileReader FileWriter
处理流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
c) IO流的使用:
i. 文件的读取到控制台和复制:推荐使用使用缓冲流进行处理,原因是:
1. 节点流是柱塞式的,而缓冲流不是柱塞式的。所以缓冲流的速度会比节点流的速度要快。
ii. 用例:
1. 使用BufferedInputStream 和BufferedOutputStream来实现费文本文件的复制。

34@Test
5public void TestCopyFile(String src, String desc) {
67、          BufferedInputStream bis = null;
8、          BufferedOutputStream bos = null;
9try {
10// 1、创建File文件
11、             File file_src = new File(src);
12、             File file_desc = new File(desc);
13// 2、创建节点流
14、             FileInputStream fis = new FileInputStream(file_src);
15、             FileOutputStream fos = new FileOutputStream(file_desc);
16// 3、创建缓冲流
17、             bis = new BufferedInputStream(fis);
18、             bos = new BufferedOutputStream(fos);
19// 4、开始处理数据
20byte[] bytes = new byte[20];
21// 返回的字节长度
22int len;
23while ((len = bis.read(bytes)) != -1) {
24、                 bos.write(bytes, 0, len);
25// 数据刷新
26、                 bos.flush();
27、             }
28、         } catch (IOException e) {
29// TODO Auto-generated catch block
30、             e.printStackTrace();
31、         } finally {
32// 5、关闭数据流(只要关闭缓冲流,其节点流就会跟随一起关闭)
33if (bos != null) {
34try {
35、                     bos.close();
36、                 } catch (IOException e) {
37// TODO Auto-generated catch block
38、                     e.printStackTrace();
39、                 }
40、             }
41if (bis != null) {
42try {
43、                     bis.close();
44、                 } catch (IOException e) {
45// TODO Auto-generated catch block
46、                     e.printStackTrace();
47、                 }
48、             }
49、         }
50、     }
*1. 使用BufferedReader 和 BufferedWriter 来实现文本文件的复制。*      
51public class TestBufferedReaderWriter {
52// 使用BufferedReader 和 BufferedWriter 来实现文本文件的复制
53、     @Test
54public void TestBuffered() {
55、         BufferedReaderWriter("D://1.txt", "D://2.txt");
56、     }
5758public void BufferedReaderWriter(String src, String desc) {
59、         BufferedReader br = null;
60、         BufferedWriter bw = null;
61try {
62、             File file1 = new File(src);
63、             File file2 = new File(desc);
6465、             FileReader fr = new FileReader(file1);
66、             FileWriter fw = new FileWriter(file2);
6768、             br = new BufferedReader(fr);
69、             bw = new BufferedWriter(fw);
7071// char[] chars = new char[20];
72// int len;
73// while ((len = br.read(chars)) != -1) {
74// bw.write(new String(chars, 0, len));
75// bw.flush();
76// }
77、             String str = null;
78while ((str = br.readLine()) != null) {
79、                 bw.write(str.toCharArray());
80// 换行
81、                 bw.newLine();
8283、                 bw.flush();
84、             }
85、         } catch (IOException e) {
86// TODO Auto-generated catch block
87、             e.printStackTrace();
88、         } finally {
89if (bw != null) {
90try {
91、                     bw.close();
92、                 } catch (IOException e) {
93// TODO Auto-generated catch block
94、                     e.printStackTrace();
95、                 }
96、             }
97if (br != null) {
98try {
99、                     br.close();
100、                    } catch (IOException e) {
101// TODO Auto-generated catch block
102、                        e.printStackTrace();
103、                    }
104、                }
105、            }
106107、        }
108、    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值