IO的学习与使用
2024-10-18 19:35:49
一、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
最新文章
- O(1)快速乘注意事项
- ThinkPHP 3.2.2 在 volist 多重循环嵌套中使用 if 判断标签
- 使用RMAN从磁带库恢复归档文件
- IdTCPServer, idTCPClient
- CSS禁止Chrome谷歌浏览器激活输入框后自动添加橘黄色边框
- Spring Framework Reference,Documentation,spring英文文档.pdf 官方文档
- __weak如何实现目标值自己主动设置nil的
- 创建GitHub技术博客
- Markdown语法基础
- System.nanoTime与System.currentTimeMillis的区别(转)
- ElasticSearch6.3.2------查询
- python全栈开发day70-Django中间件
- 学习笔记之Fluent Python
- Github介绍
- SpringBoot配置发送邮件
- 在windows上部署使用Redis出现问题的解决方法
- 如何通过Fiddler模拟弱网进行测试
- volatile关键字学习
- codeforces水题100道 第三题 Codeforces Beta Round #47 A. Domino piling (math)
- python序列化数据
热门文章
- [JSOI2009]电子字典 hash
- 【BZOJ3162】独钓寒江雪(树哈希,动态规划)
- linux内核设计与实现一书阅读整理 之第一二章整合
- bzoj1969: [Ahoi2005]LANE 航线规划(树链剖分)
- Codeforces 578B. ";Or"; Game(思维题)
- 【DP】【P5080】 Tweetuzki 爱序列
- SP1487 PT07J - Query on a tree III (主席树)
- Qt ------ 我定义的规则 之 对象命名规则
- 使用Eclipse进行SWT编程
- proxy vue3.0