Java中流的学习总结(1)
来源:互联网 发布:武汉纵横网络 编辑:程序博客网 时间:2024/05/29 16:59
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来实现费文本文件的复制。
3、 4、 @Test5、 public void TestCopyFile(String src, String desc) {6、 7、 BufferedInputStream bis = null;8、 BufferedOutputStream bos = null;9、 try {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、开始处理数据20、 byte[] bytes = new byte[20];21、 // 返回的字节长度22、 int len;23、 while ((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 block30、 e.printStackTrace();31、 } finally {32、 // 5、关闭数据流(只要关闭缓冲流,其节点流就会跟随一起关闭)33、 if (bos != null) {34、 try {35、 bos.close();36、 } catch (IOException e) {37、 // TODO Auto-generated catch block38、 e.printStackTrace();39、 }40、 }41、 if (bis != null) {42、 try {43、 bis.close();44、 } catch (IOException e) {45、 // TODO Auto-generated catch block46、 e.printStackTrace();47、 }48、 }49、 }50、 }
*1. 使用BufferedReader 和 BufferedWriter 来实现文本文件的复制。*
51、 public class TestBufferedReaderWriter {52、 // 使用BufferedReader 和 BufferedWriter 来实现文本文件的复制53、 @Test54、 public void TestBuffered() {55、 BufferedReaderWriter("D://1.txt", "D://2.txt");56、 }57、 58、 public void BufferedReaderWriter(String src, String desc) {59、 BufferedReader br = null;60、 BufferedWriter bw = null;61、 try {62、 File file1 = new File(src);63、 File file2 = new File(desc);64、 65、 FileReader fr = new FileReader(file1);66、 FileWriter fw = new FileWriter(file2);67、 68、 br = new BufferedReader(fr);69、 bw = new BufferedWriter(fw);70、 71、 // 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;78、 while ((str = br.readLine()) != null) {79、 bw.write(str.toCharArray());80、 // 换行81、 bw.newLine();82、 83、 bw.flush();84、 }85、 } catch (IOException e) {86、 // TODO Auto-generated catch block87、 e.printStackTrace();88、 } finally {89、 if (bw != null) {90、 try {91、 bw.close();92、 } catch (IOException e) {93、 // TODO Auto-generated catch block94、 e.printStackTrace();95、 }96、 }97、 if (br != null) {98、 try {99、 br.close();100、 } catch (IOException e) {101、 // TODO Auto-generated catch block102、 e.printStackTrace();103、 }104、 }105、 }106、 107、 }108、 }
- Java中流的学习总结(1)
- Java中流的学习总结(2)
- Java中流的问题总结(实例)
- JAVA中流的概念
- Java中流的概念
- java中流的应用
- java中流的操作
- java中流的分类
- Java中流的概念
- Java中流的分类
- Java中流的分割
- Java中流-----个人总结心得
- QT中流Qbuffer的应用总结
- Delphi中流类的学习(一)
- 关于java中流的知识的整理
- Java中流操作的对象选择
- 关于JAVA中流的flush问题
- java中流的那点事
- 在树莓派上使用LimeSDR
- 占楼
- 【词汇详解】事务详解
- windows可视化编程(一)
- ionic2混合应用调起原生地图应用
- Java中流的学习总结(1)
- CSS3实现3d效果的立体盒子
- [Python]ctypes+struct实现类c的结构化数据串行处理
- softmax 损失函数以及梯度推导计算
- Android WebView系列文章4 WebView的问题总结
- 动态规划之混合背包
- C++面试题(~01)
- ffplay 双重非 获取0或1
- 小白入门---BMOB后端云的使用