Java IO流 处理流--转换流
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO流 处理流--转换流相关的知识,希望对你有一定的参考价值。
1. 转换流
-
InputStreamReader 和 OutputStreamWriter 用于字节数据到字符数据之间的转换
-
InputStreamReader 需要和 InputStream “套接” 。
-
OutputStreamWriter 需要和 OutputStream “套接” 。
-
转换流在构造时可以指定其编码集合
-
转换流非常的有用,它可以把一个字节流转换成一个字符流,转换流有两种,一种叫InputStreamReader,另一种叫OutputStreamWriter。InputStream是字节流,Reader是字符流,InputStreamReader就是把InputStream转换成Reader。OutputStream是字节流,Writer是字符流,OutputStreamWriter就是把OutputStream转换成Writer。把OutputStream转换成Writer之后就可以一个字符一个字符地通过管道写入数据了,而且还可以写入字符串。我们如果用一个FileOutputStream流往文件里面写东西,得要一个字节一个字节地写进去,但是如果我们在FileOutputStream流上面套上一个字符转换流,那我们就可以一个字符串一个字符串地写进去。
1.1 【转换流测试代码01】
char.txt(程序运行前)
TestTransform1.java
package character1;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
public class TestTransform1 {
public static void main(String[] args) {
try {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("E:\\\\IDEACode\\\\ketangpai\\\\file-test\\\\src\\\\character1\\\\resource\\\\char.txt"));
osw.write("Hello World! I love coding.");// 把字符串写入到指定的文件 中去
System.out.println(osw.getEncoding());// 使用getEncoding()方法取得 当前系统的默认字符编码
osw.close();
/*
如果在调用FileOutputStream的构造方法时加入true, 就把写入文件设置为追加模式, 不会覆盖原来的文件.
在调用构造方法时指定了字符的编码
*/
osw = new OutputStreamWriter(new FileOutputStream("E:\\\\IDEACode\\\\ketangpai\\\\file-test\\\\src\\\\character1\\\\resource\\\\char.txt", true), StandardCharsets.UTF_8);
/*
再次向指定的文件写入字符 串,新写入的字符串加入到原来字符串的后面
*/
osw.write("\\nHello Java. You are the best!");
System.out.println(osw.getEncoding());// 使用getEncoding()方法取得 当前系统的默认字符编码
osw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
char.txt(程序运行后)
分析:
1.2 【转换流测试代码02】
TestTransform2.java
package character1;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class TestTransform2 {
public static void main(String[] args) {
try {
//System.in这里的in是一个标准的输入流,用来接收从键盘输入的数据
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = null;
s = br.readLine();//使用readLine()方法把读取到的一行字符串保存到字符串 变量s中去
while (s != null) {
System.out.println(s.toUpperCase());//把保存在内存s中的字符串打 印出来
s = br.readLine();//在循环体内继续接收从键盘的输入
if (s.equalsIgnoreCase("exit")) {
//只要输入exit循环就结束,就会退出
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
分析:
以上是关于Java IO流 处理流--转换流的主要内容,如果未能解决你的问题,请参考以下文章
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段