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.(代码片段

Java IO流--转换流的使用

IO异常--缓冲流--转换流--序列化流( IO流2 )

IO流常用基类

JAVA IO流深入理解