java的转换流,打印流,数据流

InputStreamReader(字符输入转换流)

解决不同编码,字符流读取文本内容乱码的问题

public InputStreamReader(InputStream in, String charsetName) throws UnsupportedEncodingException

Creates an InputStreamReader that uses the named charset.

把原始的字节输入流(UTF-8),按照指定字符集编码转成字符输入流。

public class test1 {public static void main(String[] args) {try(//1:得到(GBK)文件的原始字节流InputStream f1=new FileInputStream("day17-file-app\\src\\hhh4.txt");//2:把原始的字节流按照指定的字符集编码转换成字符输入流,默认是UTF-8,要变成GBKReader reader=new InputStreamReader(f1,"GBK");//3:把字符输入流包装成缓冲字符输入流BufferedReader bufferedInputStream=new BufferedReader(reader);){String line;while((line=bufferedInputStream.readLine())!=null){System.out.println(line);}}catch (Exception e){e.printStackTrace();}}
}

需要控制写出去的字符使用特定的字符集编码:


1:调用String提供的getBytes方法解决

String data="你好呀";

byte[]bytes=data.getBytes("GBK"); 

 2:使用“字符输出转换流”

OutputStreamWriter字符输出转换流

作用:可以控制写出去的字符使用说明字符集编码

public OutputStreamWriter(OutputStream out, String charsetName) throws UnsupportedEncodingException

Creates an OutputStreamWriter that uses the named charset.

可以把原始的字节输出流,按照指定的编码转换成字符输出流

public class test {public static void main(String[] args) {try(//创建一个默认的字节输出流OutputStream out=new FileOutputStream("day17-file-app\\src\\hhh5.txt");//把原始的字节输出流,转换成指定字符编码集的字符输出流Writer writer=new OutputStreamWriter(out,"GBK");//包装BufferedWriter Bwriter=new BufferedWriter(writer);){Bwriter.write("你好呀");Bwriter.newLine();Bwriter.write("aabbcc");}catch (Exception e){e.printStackTrace();}}
}

PrintStream/PrintWriter(打印流)

作用:打印流可以实现更方便,更高效的打印数据出去 

public PrintStream(File/OutputStream/String) throws FileNotFoundException 

打印流直接通向字节输出流/文件/文件路径 

public PrintStream(String fileName, Charset charset) throws IOException

可以指定写出去的字符集编码 

public PrintStream(OutputStream out, boolean autoFlush, String encoding) throws UnsupportedEncodingException

可以指定实现自动刷新,并可以指定字符的编码 

 public void println()

打印任何类型的数据

public void write(byte[] buf) throws IOException

可以指定写字节数据出去 

public class test1 {public static void main(String[] args) {try(//创建一个打印流管道PrintStream printStream=new PrintStream("day17-file-app\\src\\hhh6.txt", Charset.forName("GBK"));){printStream.println(1);printStream.println("你好");printStream.println(true);printStream.println('a');printStream.write(97);//a}catch (Exception e){e.printStackTrace();}}
}

 PrintWriter和PrintStream差不多

如何追加数据

PrintStream printStream=new PrintStream(new FileOutputStream("\"day17-file-app\\\\src\\\\hhh6.txt",true));

先包装成普通的字节输出流

PrintStream继承字节输出流OutputStream,因此支持写字节数据出去

PrintWriter继承字符输出流Writer,因此支持写字符数据出去 

打印流的应用:输出语句的重定向

public class test2 {public static void main(String[] args) {try(PrintStream printStream=new PrintStream("day17-file-app\\src\\hhh7.txt");){System.setOut(printStream);//把系统的默认打印流对象改成自己设置的打印流System.out.println("hello");}catch (Exception e){e.printStackTrace();}}
}

 数据输出流(DataOutputStream)

允许把数据和其数据类型一并写出去

public DataOutputStream(OutputStream out)

Creates a new data output stream to write data to the specified underlying output stream. The counter written is set to zero.

创建新数据输出流包装基础的字节输出流

public final void writeByte(int v) throws IOException

将byte类型的数据写入基础的字节输出流 

public final void writeInt(int v) throws IOException

 将int类型的数据写入基础的字节输出流 

public final void writeDouble(double v) throws IOException

  将double类型的数据写入基础的字节输出流 

public final void writeUTF(String str) throws IOException

将字符串数据以UTF-8编码成字节写入基础的字节输出流 

public void write(byte[] b, int off, int len) throws IOException

支持写字节数据出去 

public class test1 {public static void main(String[] args) {try(DataOutputStream dataOutputStream=new DataOutputStream(new FileOutputStream("day17-file-app\\src\\hhh8.txt"));){dataOutputStream.writeChar('c');dataOutputStream.writeDouble(3.2);dataOutputStream.writeBoolean(true);dataOutputStream.writeUTF("hello");}catch (Exception e){e.printStackTrace();}}
}
结果:

数据输入流(DataInputStream)

用于读取数据输出流写出去的数据

public DataInputStream(InputStream in)

创建新数据输入流包装的基础的字节输入流 

public final byte readByte() throws IOException

读取字节数据并返回 

public final int readUnsignedShort() throws IOException

读取int类型的数据返回 

public final String readUTF() throws IOException

读取字符串数据(UTF-8)返回 

 

public class test2 {public static void main(String[] args) {try(DataInputStream dataInputStream=new DataInputStream(new FileInputStream("day17-file-app\\src\\hhh8.txt"));){
//按照顺序读System.out.println(dataInputStream.readChar());//cSystem.out.println(dataInputStream.readDouble());//3.2}catch (Exception e){e.printStackTrace();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【华为笔试题汇总】2024-04-17-华为春招笔试题-三语言题解(Python/Java/Cpp)

🍭 大家好这里是KK爱Coding ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为近期的春秋招笔试题汇总~ 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢&#x1f…

腾讯云优惠券介绍及领取教程详解

腾讯云是腾讯集团倾力打造的云计算品牌,提供全球领先的云计算、大数据、人工智能等技术产品与服务,以卓越的科技能力打造丰富的行业解决方案,构建开放共赢的云端生态,推动产业互联网建设,助力各行各业实现数字化升级。…

Python景区票务人脸识别系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

LeetCode236:二叉树的最近公共祖先

题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是…

YOLOv8 测试 5:Linux 中 Docker 部署 YOLOv8,Python 封装 API 接口,base64 图片处理

一、前言 记录时间 [2024-4-14] 系列文章简摘: Docker 学习笔记(二):在 Linux 中部署 Docker(Centos7 下安装 docker、环境配置,以及镜像简单使用) API 接口简单使用(二)…

Zabbix监控内容

目录 一、自定义监控内容 1、在客户端创建自定义key 1.1明确需要执行的linux命令 1.2创建zabbix监控项配置文件,用于自定义Key 1.3服务端验证测试 2、在Web界面创建自定义监控模板 2.1创建模板 2.2创建应用集(用于管理监控项) 2.3创建…

python-获取config.ini中的属性值

获取配置文件中的数据 import configparser class ReadConfig(object):def __init__(self,config_file_path):self.config configparser.ConfigParser()self.config.read(config_file_path,encodingutf-8)def get_config(self,section,option):config_valueself.config.get(s…

牛客NC197 跳跃游戏(一)【中等 动态规划 Java、Go、PHP】

题目 题目链接: https://www.nowcoder.com/practice/23407eccb76447038d7c0f568370c1bd 思路 答案说的merge区间就是每个A[i]的地方能跳到的最远坐标是A[i] [i], 有一个maxReach,遍历一遍A[i], 不断刷新MaxReach, 如果某个i 位置比maxReac…

进位制之间相互转换:二进制<=>八进制

示例&#xff1a; /*** brief how about carry-bin-otc? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h> #inc…

Python可视化-matplotlib用法详解(三)

一、子图绘制 # 上节课复习 import pandas as pd import matplotlib.pyplot as plt s../../data/unrate.csvunrate pd.read_csv(s) unrate[DATE] pd.to_datetime(unrate[DATE]) first_twelve unrate[0:12] first_twelveDATEVALUE01948-01-013.411948-02-013.821948-03-014.…

【测试开发学习历程】python常用的模块(下)

目录 8、MySQL数据库的操作-pymysql 8.1 连接并操作数据库 9、ini文件的操作-configparser 9.1 模块-configparser 9.2 读取ini文件中的内容 9.3 获取指定建的值 10 json文件操作-json 10.1 json文件的格式或者json数据的格式 10.2 json.load/json.loads 10.3 json.du…

【八股】Redisson分布式锁

Redisson分布式锁 主要了解了Redisson分布式锁实现的三个功能&#xff1a; 1.可重入 -> 防止死锁 2.可重试&#xff08;i.e. 非阻塞获取锁&#xff09; 3.自动续约 1. 可重入 原理&#xff1a; 利用Redis的Hash结构&#xff0c;记录了使用当前锁的线程id和重用次数&#…

Linux系统——Elasticsearch企业级日志分析系统

目录 前言 一、ELK概述 1.ELK简介 2.ELK特点 3.为什么要使用ELK 4.完整日志系统基本特征 5.ELK工作原理 6.Elasticsearch介绍 6.1Elasticsearch概述 6.2Elasticsearch核心概念 7.Logstash介绍 7.1Logstash简介 7.2Logstash主要组件 8.Kibana介绍 8.1Kibana简介 …

考研数学|「基础」和「强化」阶段分别怎么做?

从目前考研数学的趋势来看&#xff0c;更加注重数学基础的理解和计算量。也就是基础知识和计算&#xff0c;如何锻炼这两种能力就显得尤为重要。希望我的复习经验可以给到读者一些启发。 数学规划 从备考过程来看&#xff0c;数学的复习可以分为三个阶段&#xff1a;1、基础阶…

监控系统Prometheus--与第三方框架集成

文章目录 Prometheus和Flink集成拷贝jar包修改Flink配置为了运行测试程序&#xff0c;启动netcat启动hdfs、yarn&#xff0c;提交flink任务到yarn上可以通过8088跳到flinkUI的job页面&#xff0c;查看指标统计刷新Prometheus页面&#xff0c;如果有flink指标&#xff0c;集成成…

linux线程的同步

目录 1.死锁概念 2.接口 3.代码展示 1.死锁概念 死锁的四个必要条件&#xff08;必须同时满足&#xff09;&#xff1a; 1.互斥条件&#xff1a;一个资源每次只能被一个执行流使用&#xff08;前提&#xff09;。 2.请求与保持条件&#xff1a;一个执行流因请求资源而堵塞…

如何查看Postman的版本信息?

如何查看Postman的版本信息 一、为何需要查看版本信息&#xff1f;二、查看Postman的版本信息的步骤 一、为何需要查看版本信息&#xff1f; 不同的版本之间可能存在功能和界面的差异。 二、查看Postman的版本信息的步骤 1、打开 Postman 2、打开设置项 点击页面右上角的 “…

Spring-tx事务管理

第五章 Spring声明式事务 一 声明式事务概念 1.1 编程式事务 手动编写程序来管理事务&#xff0c;即通过编写代码的方式来实现事务的提交&#xff0c;和回滚。 1.2 声明式事务 声明式事务是指使用注解或配置文件来控制事务的提交和回滚。 开发者只需要添加注解或者配置文…

陇剑杯 流量分析 webshell CTF writeup

陇剑杯 流量分析 链接&#xff1a;https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码&#xff1a;haek目录结构 LearnCTF ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ …

[SWPUCTF 2021 新生赛]error

如果 flag 只出现一半&#xff0c;用substr(A,B,C) 查询flag 1 and (select extractvalue(1,concat(~,(select substr((select flag from test_tb), 1 , 31))))) # 0-30位 左边30位 1and (select extractvalue(1,concat(~,(select substr((select flag from test_tb), 31 , 6…