Java字节流转换字符流

简介: 笔记

一、字节流转换字符流


有时需要将字节流转换为字符流,InputStreamReader和OutputStreamWriter是为实现这种转换而设计的。

InputStreamReader构造方法如下:


InputStreamReader(InputStream in):将字节流in转换为字符流对象,字符流使用默认字符集。

InputStreamReader(InputStream in, String charsetName):将字节流in转换为字符流对象, charsetName指定字符流的字符集,字符集主要有:US-ASCII、ISO-8859-1、UTF-8和UTF-16。 如果指定的字符集不支持会抛出UnsupportedEncodingException异常。

OutputStreamWriter构造方法如下:


OutputStreamWriter(OutputStream out):将字节流out转换为字符流对象,字符流使用默认字符集。

OutputStreamWriter(OutputStream out,String charsetName):将字节流out转换为字符流对象, charsetName指定字符流的字符集,如果指定的字符集不支持会抛出 UnsupportedEncodingException异常。

文件复制的案例改造成缓冲流实现,代码如下:

import java.io.*;
public class FileCopyWithBuffer {
    public static void main(String[] args) {
//        创建字节文件输入流对象
        try(FileInputStream fis = new FileInputStream("/Users/caizhengjie/Desktop/qq/123.txt");
//            创建转换流对象
            InputStreamReader isr = new InputStreamReader(fis);
//            创建字符缓冲流
            BufferedReader bis = new BufferedReader(isr);
//            创建字节文件输出流对象
            FileOutputStream fos = new FileOutputStream("/Users/caizhengjie/Desktop/qq/asd/1234.txt");
//            创建转换流对象
            OutputStreamWriter osw = new OutputStreamWriter(fos);
//            创建字符缓冲输出流对象
            BufferedWriter bos = new BufferedWriter(osw);
        ){
//            首先读取一行文本
            String line = bis.readLine();
            while (line!=null){
//                开始写入数据
                bos.write(line);
//                写一个换行符
                bos.newLine();
//                再读取一行文本
                line = bis.readLine();
            }
            System.out.println("复制完成");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述流从一个 文件字节流,构建转换流,再构建缓冲流,这个过程比较麻烦,在I/O流开发过程中经常遇到这种流 的“链条”。


相关文章
|
3月前
|
存储 Java 数据安全/隐私保护
从零开始学习 Java:简单易懂的入门指南之IO字符流(三十一)
从零开始学习 Java:简单易懂的入门指南之IO字符流(三十一)
|
3月前
|
存储 移动开发 Java
从零开始学习 Java:简单易懂的入门指南之IO字节流(三十)
从零开始学习 Java:简单易懂的入门指南之IO字节流(三十)
|
1月前
|
Java
Java文件字节流
Java文件字节流
13 0
|
1月前
|
Java
Java-.文件字节流docx
Java-.文件字节流docx
16 0
|
2月前
|
Java 索引
JAVA零基础小白免费学习教程day16-字节流&字符流(三)
JAVA零基础小白免费学习教程day16-字节流&字符流
44 0
|
2月前
|
存储 Java Windows
JAVA零基础小白免费学习教程day16-字节流&字符流(二)
JAVA零基础小白免费学习教程day16-字节流&字符流
79 0
|
2月前
|
存储 移动开发 Java
JAVA零基础小白免费学习教程day16-字节流&字符流(一)
JAVA零基础小白免费学习教程day16-字节流&字符流
51 0
|
3月前
|
缓存 Java
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
38 0
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
|
3月前
|
数据采集 存储 Java
JAVA BIO 字节流和字符流区别
【1月更文挑战第1天】JAVA BIO 字节流和字符流区别
|
Java Linux Python
CheerpJ转换JAVA使用最简教程
CheerpJ转换JAVA使用最简教程
381 0
CheerpJ转换JAVA使用最简教程