关于IO流的一些理解
来源:互联网 发布:mac 查看文件内容命令 编辑:程序博客网 时间:2024/05/19 12:37
IO流: 主要分为字节流和字符流.
字节流:
|--- InputStream(字节输入流)
通过API的查询,可以得知,InputStream是一个抽象类;这个抽象类就表示字节输入流的所有类的超类,也即父类.
但是如何去读入字节呢,InputStream中的提供了一个read()方法,但是也是抽象的
这就意味着其子类都必须重写read()方法.
我们举个其子类的例子吧:FileInputStream
<span style="font-family:Times New Roman;"><span style="white-space:pre"></span><span style="white-space:pre"></span>public int read() throws IOException { <span style="white-space:pre"></span> Object traceContext = IoTrace.fileReadBegin(path); <span style="white-space:pre"></span> int b = 0; <span style="white-space:pre"></span> try { <span style="white-space:pre"></span> b = read0(); <span style="white-space:pre"></span>} finally { <span style="white-space:pre"></span> IoTrace.fileReadEnd(traceContext, b == -1 ? 0 : 1); <span style="white-space:pre"></span> } <span style="white-space:pre"></span> return b; <span style="white-space:pre"></span> } <span style="white-space:pre"></span> private native int read0() throws IOException;</span>通过分析源码:我们知道FileInputStream底层是重写了InputStream中的read()方法的,但是为了可以直接调用
通过调用本地的read0()方法,FileInputStream就可以直接使用read()方法.
|---OutputStream(字节输出流)
同样的, OutputStream也是一个抽象的类,这个抽象类就表示字节输出流的所有类的父类
与上面对应的也有个FileOutputStream;
但是FileOutputStream在创建对象时,不需要有指定的文本文件,
FileOutputStream fos = new FileOutputStream("test.txt",true);
fos.write(92);
fos.write(87);
fos.close();
就会自动在当前目录下创建一个test.txt文件.
然后如果想继续写入,可以在传入的参数里加上一个true;
最后记住关流;
字符流:
|----Readr(字符输入流)
Reader作为所有字符输入流的父类,想必跟上面一下也是一个抽象类
Reader有个子类是FileReader;与FileInputStream相似.也是同样的必须一个文本文件存在才能读取里面的
字符;
<span style="font-size: 18px;"></span><span style="font-size:14px;">public static void main(String[] args) throws IOException {FileReader fr = new FileReader("xxx.txt");int c;while((c = fr.read()) != -1) { //通过项目默认的码表一次读取一个字符System.out.print((char)c);<span style="white-space: pre;"></span>//类型强转}fr.close();}</span>
|----Writer(字符输出流)
Writer作为所有字符输出流的父类,也是一个抽象类
Writer有个子类是FileWtriter;与FileOutputStream相似.但是和FileOutputStream有一点不同的是它在继续写入的时候
不需要再传入参数中加上一个true,下面我们来看代码
FileWriter fw = new FileWriter("test1.txt");//创建一个字符输出流对象 关联test1.txt文件
fw.write("hello,world");
fw.write("你好,中国");
fw.close();
0 0
- 关于IO流的一些理解
- 关于JAVA语言IO流的一些理解
- 黑马程序员-关于Java IO流的一些理解
- 关于IO从白痴到略懂的一些理解
- 关于IO流的自己的理解
- 关于标准IO流的一些认识
- 关于IO流的一些总结
- 异步IO的一些理解
- 关于IO的一些问题
- 关于IO的一些数字
- Java的IO流的操作和一些理解
- 关于IO流操作中的一些容易混淆的知识点
- IO流的理解
- 关于JAXB的一些理解
- 关于bitmap的一些理解
- 关于Hook的一些理解
- 关于JavaBean的一些理解
- 关于异常的一些理解
- 定时刷新网页或跳转到新页面
- sudo: unable to resolve host
- java反射机制动态给属性赋值
- 并查集
- 在mb中动态获取XMLNSC下的namespac…
- 关于IO流的一些理解
- AL32UTF8和UTF8字符集
- 添加JSTL依赖到工程中
- Android Studio NDK 入门教程(4)--优雅的在C++中输出Logcat
- Bootstrap样例
- zephyr操作系统:第一节
- java io系列01之 "目录"
- 嵌入式复习4
- Linux下安装lrzsz