一、IO的学习方法:IO中包含了很多的类,推荐的学习方式是:“举一反三,掌握一种,以此类推”。

二、I/O操作的目标:

输入:从数据源(在数据源和程序之间建立的一个数据流淌的“管道”)中读取数据(文件、键盘、网络……)

输出:将数据写入到数据目的地当中(文件、屏幕、网络……)

注意:输入和输出是一个流向问题,从一个数据源读取数据到“java程序中”;从java程序输出数据到其他地方。输出输入相对于java程序本身

三、IO分类

一、第一种分法

1、 输入流

2、 输出流

二、第二种分法

1、字节流

2、字符流

三、第三种分法

1、节点流(普通的水管)

2、处理流(普通的水管+在水管外面再加一层):在节点流的基础上对数据做进一步处理

四、字节流与字符流

字节流:

1、InputStream/OutputStream是是所有字节输入流/输出流的父类,在Java的I/O流中所有对字节流处理的类,字节流都继承自InputStream类和OutputStream类,这是两个抽象类。

2、字节流示例:

public static void main(String[] args) {
FileInputStream fileInputStream=null;
FileOutputStream fileOutputStream=null;
try{
fileInputStream=new FileInputStream("e:/a.txt");
fileOutputStream=new FileOutputStream("e:/b.txt");
byte[] buffer=new byte[1024];
while (true){
int temp=fileInputStream.read(buffer,0,buffer.length);
if(temp==-1){
break;//跳出当前循环
}
//读取a文件中的数据
fileOutputStream.write(buffer,0,temp);
}
}catch (Exception e){
System.out.println("111");
}
finally {
try{
fileInputStream.close();
fileOutputStream.close();
}catch (Exception e){
System.out.println("读取文件失败");
}
}}

字符流:

1、Reader/Writer是是所有字节输入流/输出流的父类,在Java的I/O流中所有对字符流处理的类,字符流都继承自InputStream类和OutputStream类,这是两个抽象类。

2、使用示例:

public static void main(String[] args) {
FileReader fr=null;
BufferedReader br=null;
BufferedWriter bw=null;
try{
fr=new FileReader("e:/a.txt");
br=new BufferedReader(fr);
String line=null;
while (true){
line=br.readLine();
if(line==null){
break;
}
System.out.println(line);
}
}catch (Exception e){
System.out.println("文件读取失败");
}finally {
try{
fr.close();
}catch (Exception e){
System.out.println("444");
} }
}

五、节点流和处理流

这里涉及到“装饰者模式”设计,具体见:https://i.cnblogs.com/EditPosts.aspx?opt=1

最新文章

  1. O(1)快速乘注意事项
  2. ThinkPHP 3.2.2 在 volist 多重循环嵌套中使用 if 判断标签
  3. 使用RMAN从磁带库恢复归档文件
  4. IdTCPServer, idTCPClient
  5. CSS禁止Chrome谷歌浏览器激活输入框后自动添加橘黄色边框
  6. Spring Framework Reference,Documentation,spring英文文档.pdf 官方文档
  7. __weak如何实现目标值自己主动设置nil的
  8. 创建GitHub技术博客
  9. Markdown语法基础
  10. System.nanoTime与System.currentTimeMillis的区别(转)
  11. ElasticSearch6.3.2------查询
  12. python全栈开发day70-Django中间件
  13. 学习笔记之Fluent Python
  14. Github介绍
  15. SpringBoot配置发送邮件
  16. 在windows上部署使用Redis出现问题的解决方法
  17. 如何通过Fiddler模拟弱网进行测试
  18. volatile关键字学习
  19. codeforces水题100道 第三题 Codeforces Beta Round #47 A. Domino piling (math)
  20. python序列化数据

热门文章

  1. [JSOI2009]电子字典 hash
  2. 【BZOJ3162】独钓寒江雪(树哈希,动态规划)
  3. linux内核设计与实现一书阅读整理 之第一二章整合
  4. bzoj1969: [Ahoi2005]LANE 航线规划(树链剖分)
  5. Codeforces 578B. "Or" Game(思维题)
  6. 【DP】【P5080】 Tweetuzki 爱序列
  7. SP1487 PT07J - Query on a tree III (主席树)
  8. Qt ------ 我定义的规则 之 对象命名规则
  9. 使用Eclipse进行SWT编程
  10. proxy vue3.0