IO--流--Stream
来源:互联网 发布:java是男人下 编辑:程序博客网 时间:2024/04/29 16:47
1、流分为输入流和输出流,输入/输出是相对于程序(也就是我们操作的内存)来说的。如果说信息从外部流入到程序(内存)中,就是输入流。反之,是输出流。
2、流的分类:
(1)按功能分:输入流和输出流
(2)从流结构分:字节流,以字节为处理单位;字符流,以字符为处理单位
3、字节流的输入流和输出流的基础是InputStream和OutputStream这两个抽象类,字节流的输入/输出操作由这两个类的子类实现。字符流是以字符为单位进行输入/输出处理的流,字符流输入输出的基础是Reader和Writer这两个抽象类。这两种流在底层都是以字节流处理的。
4、字节流:
(1)InputStream 和 OutputStream定义了其他流的关键方法。最重要的两个方法是read()和write(),他们分别对数据的字节进行读写
(2)read():在InputStream类中定义了3个read方法:abstract int
read()、int
read(byte[] b)和int
read(byte[] b, int off, int len),为什么只有无参read()被定义为abstract的,而其余两个是具体的方法?因为在具体实现时,第二个read依靠第三个read来实现,而第三个read又依靠第一个read来实现,所以只有第一个read方法是与具体的I/O设备相关的,这个read是需要InputStream的子类来实现
5、FileInputStream:假设我们将C盘目录下的a.txt文件的内容读取出来:
读数据的逻辑:(a)打开流,(b)如果流里面有更多的内容执行(c),(c)读取信息,(d) 关闭流
InputStream is = new FileInputStream("c:/a.txt");//从硬盘的文件中读取内容到内存
byte[] buffer = new byte[255];//存储每次读取的内容
int length = 0;//每次实际读取的长度
while (-1 != (length = is.read(buffer, 0, buffer.length))) {
String str = new String(buffer, 0, length);//将读取的内容保存到字符串对象中
System.out.println(str);
}
is.close();//使用完一定要关闭流
6、FileOutputStream:往a.txt文件写入内容:
OutputStream os = new FileOutputStream("c:/a.txt");//如果a.txt文件存在,FileOutputStream会将文件中的原有内容清空,重新写入;如果不存在,那么FileOutputStream会先创建这个文件,然后再进行写入
String str = "what is your name?";
byte[] buffer = str.getBytes();
os.write(buffer);
os.close();
这种方式,有时候并不是我们所希望的,我们要是向往文件里追加内容的话,可以将OutputStream os = new FileOutputStream("c:/a.txt, true);//true表示不将原有内容清空,而是在原有内容的后面追加新内容
- Java IO 流 stream
- IO--流--Stream
- Java io --- 流(Stream)
- IO Stream
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- IO流(Input Output Stream)总结1
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java流(Stream)、文件(File)和IO
- Java流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- [[NSBundle mainBundle] infoDictionary]
- RPC学习了解
- [数学几何]取任意四边形最长边
- OC 中 Nil nil NULL NSNull 的区别
- C&C++(1) - extern "C"的作用
- IO--流--Stream
- leetcode 第74题 Search a 2D Matrix
- 科比都这么努力,你还有什么借口不努力呢?
- 第十一周 项目0 - 是春哥啊
- C++用%20替换字符串中的空格(O(n)的时间效率)
- chenglei1986/DatePicker源码解析(二)
- 设计模式-单例模式
- Convert Sorted Array to Binary Search Tree - LeetCode 108
- 基于Spring4的全注解实现Restful开发