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流开发过程中经常遇到这种流 的“链条”。


相关文章
|
1月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
35 1
|
1月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
81 1
|
3月前
|
Java
Java系列之 字符串和字节互转
这篇文章是关于Java中字符串和字节之间互转的方法,包括使用`getBytes()`方法将字符串转换为字节数组,以及使用String构造方法将字节数组转换回字符串。
|
3月前
|
存储 缓存 Java
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
53 3
|
3月前
|
缓存 Java 数据处理
|
4月前
|
分布式计算 Java 调度
MaxCompute产品使用合集之使用Tunnel Java SDK上传BINARY数据类型时,应该使用什么作为数据类字节
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
存储 编解码 安全
一篇文章讲明白java字符流字节流
一篇文章讲明白java字符流字节流
23 0
|
5月前
|
存储 自然语言处理 Java
Java IO流完全手册:字节流和字符流的常见应用场景分析!
【6月更文挑战第26天】Java IO流涵盖字节流和字符流,字节流用于二进制文件读写及网络通信,如图片和音频处理;字符流适用于文本文件操作,支持多语言编码,确保文本正确性。在处理数据时,根据内容类型选择合适的流至关重要。
75 0
|
5天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
4天前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
下一篇
无影云桌面