IO之字节字符转换流

2023-11-05

1.转换流概述

转换流,可以将一个字节流转换为字符流,也可以将一个字符流转换为字节流


OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式

InputStreamReader:将输入的字节流转换为字符流输入形式


2.OutputStreamWriter

public class OutputStreamWriter extends Writer

OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的charset将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显示给定,否则将接受平台默认的字符集。


3.InputStreamReader

public class InputStreamReader extends Reader

InputStreamReader是字节流通向字符流额桥梁:它使用指定的charset读取字节并将其解码为字符。他使用的字符集可以由名称指定或显示给定,或者可以接受平台默认的字符集。






package com.vince.convertstream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

/**
 * 转换流
 * @author lamp
 *
 */
public class ConvertStreamDemo {
	
	/**
	 * 使用转换流,把字节流转换成字符流
	 */
	public static void reader(){
		
		try {
			//构造字节输入流
			InputStream in = new FileInputStream("d:\\别让大学上了你.txt");
			//通过字节输入流构造一个字符输入流
			Reader reader = new InputStreamReader(in);
			
			char[] cs = new char[50];
			int len = -1;
			StringBuilder sb = new StringBuilder();
			while((len=reader.read(cs))!=-1){
				sb.append(new String(cs,0,len));
			}
			//关闭流
			reader.close();
			in.close();
			
			System.out.println(sb);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	/**
	 * 使用转换流,把字符流转换成字节流输出
	 * OutputStreamWriter
	 */
	public static void writer(){
		try {
			//构造一个字节输出流
			OutputStream out = new FileOutputStream("d:\\3.txt");
			
			String info = "山不在高,有仙则名;学JAVA,没威哥不行";
			//通过字节输出流构造一个字符输出流
			Writer writer = new OutputStreamWriter(out);
			
			writer.write(info);//输出
			//关闭流
			writer.close();
			out.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

	public static void main(String[] args) {
//		writer();
		reader();
	}

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IO之字节字符转换流 的相关文章

随机推荐

  • Ubuntu20.04 安装Anaconda相关记录【换源】【指令】【关闭默认环境】

    打开终端默认使用base环境时关闭base环境 在安装了ubuntu20 04版之后因为使用原因需要在环境中安装Anaconda 参照了网上的安装方式之后发现打开终端的时候会默认打开conda的base环境 应为要安装ROS使用 默认环境使
  • java高并发处理 java处理高并发的几种方法

    一 背景综述 并发就是可以使用多个线程或进程 同时处理 就是并发 不同的操作 高并发的时候就是有很多用户在访问 导致系统数据不正确 糗事数据的现象 对于一些大型网站 比如门户网站 在面对大量用户访问 高并发请求方面 基本的解决方案集中在这样
  • Dubbo分布式日志追踪,多线程不能获取窜ID和IP问题

    接着上一篇日志 当用MDC或者ThreadContext来put或者get数据的时候 不同线程是获取不到的 他们都是ThreadLocal维护 所以线程独立 如果需要子线程获取则将参数传入 在Thread的run方法执行的时候将传入的ID和
  • Ubuntu & CentOS配置JAVA JDK环境

    Linux配置Java JDK 环境 下载地址 https www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 根据系统相应版本进行下载
  • 程序流程图

    程序流程图又称程序框图 是以特定图形符号外加文字说明描述程序运行具体步骤的图示 它结合相应的算法 经由处理框 判断框 起止框 连接点 流程线等构成整个流程图 在工作过程中 流程图主要是说明某一特定过程 尤其对于产品经理和交互设计师来说 学会
  • Qt Creator登录对话框

    实现功能 在弹出对话框中填写用户名和密码 按下登录按钮 如果用户名和密码均正确则进入主窗口 如果有错则弹出警告对话框 实现原理 通过上节的多窗口原理实现由登录对话框进入主窗口 而用户名和密码可以用if语句进行判断 实现过程 1 先新建Qt4
  • 基于D-S证据理论的数据融合研究与应用

    1 课题背景及研究的目的和意义 1 1课题背景 证据理论源于20世纪60年代美国哈弗大学的数学家A P Dempster 利用上 下概率来解决多值映射问题方面的研究工作 后来他的学生G Shafer对证据理论引入了信任函数和似然函数的概念
  • 指针数组——元素为指针的数组

    说明 指针数组就是一个数组 这个数组的数组单元都是指针型数据 定义 int a 6 1 2 3 4 5 6 int p 6 数据类型符 变量名 常量表达式 用法 for i 0 i lt 6 i p i a i 就是一个元素为指针的数组 注
  • CTF比赛中常见的MISC解题方法(不涉及内存取证和流量分析)仅供菜鸟,大佬绕道

    我们在ctf比赛中 大多数时候签到题都是misc 会不会有小伙伴因为签到题而感到头痛 其实misc的签到题是非常简单的 不然怎么可能叫签到 好吧 废话不多说 直接说干货 1 题目直接给了编码 比如 前几天的第一届 长城杯 的misc签到题
  • 单片机学习 7-IO拓展(串转并)-74HC595

    I O拓展 串转并 74HC595芯片介绍 上面两张都是 74HC595 芯片管脚图 左侧的 1 脚是 QB 而右侧芯片的 1 脚是 Q1 左侧芯片的 11 脚是 SCK 而右侧芯片的 11 脚是 SH CP 还有很多其他管脚不一样 其实这
  • 【Linux命令详解

    文章标题 简介 一 参数列表 二 使用介绍 1 pwd命令的基本使用 2 pwd命令中的参数 3 pwd命令的工作机制 4 pwd命令的实际应用 总结 简介 pwd命令是Linux中的基础命令之一 使用该命令可以快速查看当前工作目录 在掌握
  • go 实现结构体的复制

    go 将一个结构体里面的数据全部复制到另一个结构体 import reflect func DeepFields ifaceType reflect Type reflect StructField var fields reflect S
  • KEIL Real view MDK中插入空操作NOP

    折腾了大半天 才搞明白一个空操作的指令 先在网上查有的说是 asm NOP 从intrins h里调用 可犄角旮旯全找了 也没看到什么intrint h的文件 如果直接用 就出现 error 1113 Inline assembler no
  • git获取本地用户名和密码命令

    1 查看本地 Git 配置文件 在使用 Git 的过程中 用户的用户名和邮箱地址都会被保存在本地 Git 配置文件中 因此 可以通过查看该配置文件来获取用户名和密码 打开 Git Bash 或者终端窗口 输入以下命令 查看用户名 git c
  • kaggle在output上;pytorch安装包下载后怎么装;(最全的安装包下载带cuda版本)DGL113下载;报错:UserWarning: NVIDIA GeForce RTX;fcntl报错

    1 kaggle在output上运行 可以从kaggle上查看https www kaggle com houzitest cake1111 因为input只能读 所以再output上运行 再执行 import torch print to
  • (C++)输入一行字符,分别统计出其中英文字母、空格、数字的个数

    include
  • echart 实现可以点击下钻的地图

    codescanbox 封装成了一个类 通过 getLoadMap 来获取对应的实例对象 一个是单纯的地图 一个是可以打点的地图 getLoadMap 需要 3 个参数 echarts 实例 registerMap 注册地图的api typ
  • ionic3之js(jQuary),css,图片的引入

    一 js文件 以jQuary为例 相信有很多朋友使用不习惯angularjs 所以想使用已经很熟悉的JQuary 在这里我就给出怎么引入jQuary文件 并使用 1 把要引入的jQuary文件放到app下的assets目录下 2 在src下
  • go 进阶 请求代理相关: 三. ReverseProxy 负载均衡

    目录 一 ReverseProxy 负载均衡 简单随机负载均衡示例 简单轮询负载均衡示例 加权负载均衡示例 一致性Hash 二 反向代理添加负载均衡功能 一 ReverseProxy 负载均衡 ReverseProxy 支持负载均衡功能 提
  • IO之字节字符转换流

    1 转换流概述 转换流 可以将一个字节流转换为字符流 也可以将一个字符流转换为字节流 OutputStreamWriter 可以将输出的字符流转换为字节流的输出形式 InputStreamReader 将输入的字节流转换为字符流输入形式 2