黑马程序员---IO
来源:互联网 发布:为知笔记怎么分享 编辑:程序博客网 时间:2024/06/08 07:12
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
题记:
IO是JAVA中的又一个重点,主要是输入输出和效率的问题,需要注意的是,在JAVA中的输入和输出与我们正常思维的概念是不一样的。
正常思维的话,输入就是写进去,而输出就出拿出来。
而在JAVA中,输入是读取,而输出是一个存入的概念。
与正常思维正好相反。
IO
IO是JAVA中用来处理数据传输的机制,input和output的简写,也是写入与取出的意思。
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流与字符流 。
流按流向分为:输入流,输出流
字节流的抽象基类:InputStream ,OutputStream。
字符流的抽象基类:Reader ,Writer。
注:由这四个类派生出来的子类名称都是 以其父类名作为子类名的后缀。如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
字符流---创建文件
创建流对象,建立数据存放文件
FileWriter fw = new FileWriter(“Test.txt”);
调用流对象的写入方法,将数据写入流
fw.write(“text”);
关闭流资源,并将流中的数据清空到文件中。
fw.close();
例子:
读取文件
建立一个流对象,将已存在的一个文件加载进 流。
FileReader fr = new FileReader(“Test.txt”);
l
创建一个临时存放数据的数组。
char[] ch = new char[1024];
l
调用流对象的读取方法将流中的数据读入到数组 中。
fr.read(ch);
注意事项
定义文件路径时,可以用“/”或者“\\”。
在创建一个文件时,如果目录下有同名文 件将被覆盖。
在读取文件时,必须保证该文件已存在, 否则出异常。
字符流的缓冲区
缓冲区的出现提高了对数据的读写效率。
对应类BufferedWriter
BufferedReader
缓冲区要结合流才可以使用。
在流的基础上对流的功能进行了增强。
字节流
基本操作与字符流类相同。
但它不仅可以操作字符,还可以操作其他媒体文件。
字节流的缓冲区,同样是为了提高读写效率而存在的。
转换流
InputStreamReader,OutputStreamWriter
转换流的由来字符流与字节流之间的桥梁
方便了字符流与字节流之间的操作
转换流的应用字节流中的数据都是字符时,转成字符流操作更高效。
标准的输入 输出流
System类中的字段:in,out。
它们各代表了系统标准的输入和输出设备。
默认输入设备是键盘,输出设备是显示器。
System.in的类型是InputStream.
System.out的类型是PrintStream是OutputStream的子类FilterOutputStream 的子类.
示例:
获取键盘录入数据,然后将数据流向显示器,那么显示器就是目的地。
通过System类的setIn,setOut方法对默认设备进行改变。System.setIn(new FileInputStream(“1.txt”));//将源改成文件1.txt。
System.setOut(new FileOutputStream(“2.txt”));//将目的改成文件2.txt
因为是字节流处理的是文本数据,可以转换成字符流,操作更方便。
BfferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(System.out));
注意
流是用来处理数据的。
处理数据时,一定要先明确数据源,与数据目的 地(数据汇)。
数据源可以是文件,可以是键盘。
数据目的地可以是文件、显示器或者其他设备。
而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理.转换处理等。
字符流
文件
用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作 。
File对象可以作为参数传递给流的构造函数。
函数自己调用自己。
注意:递归时一定要明确结束条件。
应用场景:当某一功能要重复使用时。
管道流
RandomAccessFile随机访问文件,自身具备读写的方法。
通过skipBytes(int x),seek(int x)来达到随机访问。
管道流PipedInputStream和PipedOutputStream输入输出可以直接进行连接,通过结合线程使用。
其他:
打印流:
PrintWriter与PrintStream
可以直接操作输入流和文件。
l
序列流:
SequenceInputStream
对多个流进行合并。
l
操作对象:
ObjectInputStream与ObjectOutputStream
被操作的对象需要实现Serializable (标记接口);
操作基本数据类型DataInputStream与DataOutputStream
操作字节数组ByteArrayInputStream与ByteArrayOutputStream
操作字符数组CharArrayReader与CharArrayWrite
操作字符串StringReader 与StringWriter
字符流的出现为了方便操作字符。
更重要是的加入了编码转换。
通过子类转换流来完成。InputStreamReader
OutputStreamWriter
在两个对象进行构造的时候可以加入字符集。
编码表的由来
计算机只能识别二进制数据,早期由来是电信号。
为了方便应用计算机,让它可以识别各个国家的文字。
就将各个国家的文字用数字来表示,并一一对应,形成一张表。
这就是编码表。
常见的编码表
ASCII:美国标准信息交换码。用一个字节的7位可以表示。
ISO8859-1:拉丁码表。欧洲码表用一个字节的8位表示。
GB2312:中国的中文编码表。
GBK:中国的中文编码表升级,融合了更多的中文文字符号。
Unicode:国际标准码,融合了多种文字。所有文字都用两个字节来表示,Java语言使用的就是unicode
UTF-8:最多用三个字节来表示一个字符。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
- 黑马程序员 IO
- 黑马程序员之IO
- 黑马程序员 IO流
- 黑马程序员之IO
- 黑马程序员--IO
- 黑马程序员IO流
- 黑马程序员-io
- 黑马程序员-IO流
- 黑马程序员-IO
- 黑马程序员---IO流
- 黑马程序员-----IO流
- 黑马程序员~IO流小述
- 黑马程序员--io流
- 黑马程序员:IO流
- 黑马程序员----IO流
- 黑马程序员->IO
- 黑马程序员--IO流
- 黑马程序员-IO流
- 黑马程序员---多线程
- (搬运)《算法导论》习题解答 Chapter 22.1-1(入度和出度)
- 关于socket
- 构造函数的初始化列表
- PAT_1002: A+B for Polynomials
- 黑马程序员---IO
- 何种情况下可以用对象名直接访问私有变量
- 拷贝构造函数的参数类型必须是引用
- 黑马程序员———循序渐进学编程
- 【毕业生】外包公司适合你么?
- ARM与 x86相比较
- 整理试卷
- Makefile之wildcard
- PAT_1003: Emergency