关于IO流的自己的理解
来源:互联网 发布:产品外壳设计知乎 编辑:程序博客网 时间:2024/05/17 02:43
最近看了一些关于输入输出流的视频,对于其中的知识点做了一些总结。
Java IO包
1 File 类:Java程序中此类的一个对应硬盘中的一个文件(或者文件目录)或网络中的一个资源。
File file = new File(绝对路径或者相对路径);
>File 既可以表示一个文件又可以表示一个文件目录。
>File类对象是与平台无关的。
>File类对于文件或者文件目录只能进行新建、删除、看下上层目录等操作,如果涉及到访问文件的内容,File是无能为力的,只能使用
IO流下提供的相应输入输出流来实现。
>常把File类的对象作为形参传递给相应的输入输出流的构造器中!
2 IO流的结构(精选部分)
抽象基类 节点流(文本流) 缓冲流(处理流中的一种)
InputStream FileInputStream(int read(byte[] b)) bufferedInputStream (int read(byte[] b))
OutputStream FileOutputStream(void write(b,0,len)) bufferedOutputStream(flush())(void write(b,0,len))
Reader FileReader(int read(char [] c)) bufferedReader(readline())(int read(char [] c))或者(String readLine())
Writer FileWriter(void write(c,0.len)) bufferedWriter(flush())(void write(c,0.len))或者(void write(String str))
注:1)从硬盘中读入一个文件,文件必须是存在的。若不存在,则会报FileNotFoundException的异常。
2) 从程序中输出内容到硬盘,若文件存在,那么覆盖文件原先的内容,如果不存在,那么创建文件。
3)真正开发时,使用缓冲流来代替节点流(效率高)。
4)最后要关闭相应的流,先关闭输出流,再关闭输入流,此操作放在finally里。
3 IO流的划分
1)(占位于程序的角度)按照流的流向不同:输入流、输出流
2)按照流中的数据单位的不同:字节流、字符流(纯文本文件建议使用字符流,非纯文本只能使用字节流)
3)按照流的角色的不同:节点流、处理流(节点流直接作用于文件上(4个),除此之外全是处理流)
5、其他的流
1)转换流:实现字节流与字符流之间的转换。
inputSteamReader输入时实现字节流到字符流的转换,提高操作的效率(前提数据是文本文件)。
OutputStreamWriter 输出时实现字符流到字节流的转换(前提数据是文本文件)。
例子:
键盘输入字符,遇到e或者exit时,退出,其他情况下,小写转换成大写。
@Test
public void test(){
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String str;
String str1;
try {
while(true){
System.out.println("请输入字符:");
str = br.readLine();
if(str.equalsIgnoreCase("e")||str.equalsIgnoreCase("exit")){
break;
}
str1 = str.toUpperCase();
System.out.println(str1);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2)标准的输入流和输出流
System.in:从键盘输入数据
System.out:从显示器输出数据
3)还有打印流、数据流、对象流、随机存取文件流
- 关于IO流的自己的理解
- 关于IO流的一些理解
- Linux IO 重定向自己的理解
- IO流的理解
- 关于JAVA语言IO流的一些理解
- 黑马程序员-关于Java IO流的一些理解
- 关于单片机IO口输入输出的理解!
- 关于volley的一点自己的理解
- 关于排序的一些自己的理解
- 关于 ++i*--i 问题自己的理解
- 关于C++虚函数自己的理解
- 关于连接池自己的一理解
- 自己关于Android中Matrix的理解
- 关于委托自己的一点理解
- 关于Andiroid SDcard 自己的一些理解
- 自己关于KMP算法的理解
- 关于js闭包自己的理解
- JAVA关于线程自己的一些理解
- android jni 返回java的一个类
- 编码实践1
- 个人总结的代码
- web前端-CSS 组合选择符 -021
- First Missing Positive
- 关于IO流的自己的理解
- 使GetMessage返回0的方法
- irun , vcs 调用UVM 的方法
- 系统环境变量profile修改导致进入不了系统
- Java内存溢出的详细解决方案
- ZooKeeper 统一配置管理
- suricata 3.1 源码分析28 (数据包TCP解码)
- 如何阅读一个没有参与过的项目
- 关于excel表导入ssh框架写的mysql数据库中