厦门电子网站建设,毕业设计网站开发流程,手机网站列表页源码,建立生育支持政策体系java学习
一.io流 简介#xff1a;io#xff0c;i代表in#xff0c;指的是输入#xff0c;o代表输出。io流是用于处理输入和输出数据的机制。Java的io流主要分为字节流和字符流两种类型。这些流可以用于读取和写入不同类型的数据#xff0c;如文本#xff0c;图片#…java学习
一.io流 简介ioi代表in指的是输入o代表输出。io流是用于处理输入和输出数据的机制。Java的io流主要分为字节流和字符流两种类型。这些流可以用于读取和写入不同类型的数据如文本图片声音等。 1.字节输入流
1.1 字节输入流读取单个字节
我们首先需要实例化一个FileInputStream对象并且指向一个文件这里我们先用文本文件。
对对象调用read方法。
InputStream s1new FileInputStream(src\\io\\12.txt);int b1;b1s1.read();System.out.println(b1);s1.close();
文件内部 这里是读取了字符的ASCll码值可以将其转成字符。
InputStream s1new FileInputStream(src\\io\\12.txt);int b1;b1s1.read();System.out.println((char)b1);s1.close(); 我们还可以用循环将字符一次性读取完。
因为当文件数据读取完后再读取会返回-1所以可以利用这个特性去写循环代码。 InputStream s1new FileInputStream(src\\io\\12.txt);int b1;while ((b1 s1.read())!-1){System.out.print((char) b1);}s1.close(); 注意在utf-8编码格式中中文占3个字节所以文本有中文会读取异常。 需要注意的是我们在往后的使用中文件的数据通常有几十万个字节如果我们一个一个读取就会需要循环几十万次这样效率太低了所以我们可以一次读取多个字节。
1.2 字节输入流读取多个字节
我们可以使用数组每次最多装的字节数就是数组的容量。
InputStream s1new FileInputStream(src\\io\\12.txt);byte[] buffernew byte[3];int lengths1.read(buffer);System.out.println(new String(buffer, 0, length));s1.close();
这里我们设置每次读取3个字节然后用字符串转换输出。 我们也可以用循环输出全部字节。 InputStream s1new FileInputStream(src\\io\\12.txt);byte[] buffernew byte[3];int length;while ((lengths1.read(buffer))!-1){System.out.print(new String(buffer, 0, length));}s1.close(); 那这里为什么又能输出中文了呢
因为在输出中文时是一次性将中文所占的三个字节全部拿出了如果再整合成了一个字符如果你换一下文本前面字母数字的个数输出还是会异常。
通过字节输入流读取多个字节可以自定义选择读取的字节数并且也可以加快读取速度。
2.字节输出流
2.1 字节输出流读取单个字符
这里和输入的格式也是一样只是实例化的对象变为FileOutputStream调用write方法可以写入你想要写入的字符。 OutputStream r1new FileOutputStream(src\\io\\12.txt);r1.write(1);r1.write(2);r1.write(3);r1.write(4);r1.close(); 里面也可以放入ASCll码值比如放入97就会存入a。
2.2字节输出流读取多个字符
还是和上面一样使用到数组。 OutputStream r1new FileOutputStream(src\\io\\12.txt);byte[] bytes{98,99,100,101,102,103,104};r1.write(bytes);r1.close(); 如果想不覆盖原文件内容而是直接追加那我们只需要在文件路径后面加true。 OutputStream r1new FileOutputStream(src\\io\\12.txt,true);byte[] bytes{98,99,100,101,102,103,104};r1.write(bytes);r1.close(); 字节流由于其特性可以输入输出任何数据但是对文本文件的输入输出的效果却比不上字符流方便所有在处理文本文件尽量使用字符流也可以很好对中文进行处理。 3.字符输入流
3.1 字符输入读取单个字符
这里使用FileReader示例化对象也是调用read方法可以输入中文。 循环输入全部字符
Reader r1new FileReader(src\\io\\12.txt);int c;while ((cr1.read())!-1) {System.out.print((char)c);}r1.close(); 3.2 字符输入读取多个字符
使用字符数组 Reader r1new FileReader(src\\io\\12.txt);int c;char[] buffernew char[4];r1.read(buffer);System.out.println(new String(buffer, 0, 4));r1.close();循环读取 Reader r1new FileReader(src\\io\\12.txt);int c;char[] buffernew char[4];while ((cr1.read(buffer))!-1){System.out.println(new String(buffer, 0, c));}r1.close(); 4.字符输出流
4.1 字符输出流读取单个字符
实例化FileWriter对象然后调用write方法直接往里面放字符。 Writer r1new FileWriter(src\\io\\12.txt);r1.write(1);r1.write(王);r1.close(); 4.2 字符输出流读取多个字符
可以直接在writer方法里面放字符串。 Writer r1new FileWriter(src\\io\\12.txt);r1.write(你好世界);r1.close();
也可以输出部分方法起始点和长度即可。