当前位置: 首页 > news >正文

java基础之IO流之字符流

字符流

传输char和String类型的数据

输入流

  • 抽象父类:Reader

  • 节点流:FileReader

常用方法
  1. int read():读取一个字符,读取到达末尾,返回-1

package com.by.test2;
​
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
​
public class TestReader {public static void main(String[] args) {try(//字符输入节点流FileReader fr=new FileReader("file/d.txt")){while (true) {int n = fr.read();if (n == -1) {break;}System.out.println((char) n);}
​}catch (FileNotFoundException e) {System.out.println("文件路径不正确");} catch (IOException e) {System.out.println("读写失败!");e.printStackTrace();} catch (Exception e) {System.out.println("未知异常!");e.printStackTrace();}}
}

输出流

  • 抽象父类:Writer

  • 节点流:FileWriter

常用方法
  1. write(int ):向目标文件写入一个字符

  2. write(String ):向目标文件写入一个字符串

package com.by.test2;
​
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
​
public class TestWriter {public static void main(String[] args) {try(//字符输出节点流FileWriter fw=new FileWriter("file/e.txt")){fw.write(65);fw.write(66);fw.write(67);//写入字符串fw.write("一二三四五");fw.write("上山打老虎");
​System.out.println("写入成功!");
​}catch (FileNotFoundException e) {System.out.println("文件路径不正确");} catch (IOException e) {System.out.println("读写失败!");e.printStackTrace();} catch (Exception e) {System.out.println("未知异常!");e.printStackTrace();}}
}

输入缓冲过滤流

  • BufferedReader

方法
  1. String readLine(): 一次读取一行数据,读取到达末尾返回null

package com.by.test2;
​
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
​
public class TestBufferedReader {public static void main(String[] args) {try(//字符输入节点流FileReader fr=new FileReader("file/d.txt");//添加缓冲过滤流BufferedReader br=new BufferedReader(fr)){while (true) {//接收本次读取内容String s = br.readLine();//判断读取是否到达末尾if (s == null) {break;}System.out.println(s);}
​}catch ...}
}

输出缓冲过滤流

  • PrintWriter

    • BufferedWriter中的方法没有PrintWriter更多更实用

方法
  1. print(值):向目标文件写入一个数据,默认不换行

  2. println(值): 向目标文件写入一个数据,默认换行

  3. println(): 向目标文件写入一个空行

package com.by.test2;
​
import com.by.entity.Student;
​
import java.io.*;
​
public class TestPrintWriter {public static void main(String[] args) {try(//字符输出节点流FileWriter fw=new FileWriter("file/e.txt");//添加缓冲过滤流PrintWriter pw=new PrintWriter(fw)){pw.print(5.5);pw.print(true);pw.println();pw.println("一二三四五");pw.println("上山打老虎");
​Student s = new Student("zhangsan", 20, 99.5);pw.println(s);
​System.out.println("写入成功!");
​}catch...}
}

pw对象中的print|println方法写对象与对象过滤流写对象的区别?

pw只是在读写对象引用的toString方法的结果,并未读写对象的完整信息,所以无法对对象进行序列号及反序列化

对象过滤流是在读写对象的完整信息,所以可以对对象进行序列号及反序列化

pw中的print|println方法与输出语句中的有何不同?

pw是将数据写入到目标文件长久保存

标准输出流是将数据写入到控制台临时查看

字符编码集

  • 编码: 原内容–>加密–>数字

  • 解码: 数字–>解密–>原内容

常见编码集

  • GBK: 简体中文

  • Big5: 繁体中文

  • ASC||: 美国

  • ISO-8859-1: 西欧

  • Unicode:

    • UTF-16: java默认编码集,所有内容统一占用2个字节

    • UTF-8: 行业标准, 所占字节由内容大小决定,通常为1-3个字节

不同编码集拥有独立的编解码方式,之间互不相通

桥转换流

  • 输入: InputStreamReader

  • 输出: OutputStreamWriter

创建

  • 基于字节节点流对象. 将字节流中的内容转换为字符流,并在转换过程中设置数据传输的编码集

InputStreamReader isr=new  InputStreamReader(fis对象,"编码集");
OutputStreamWriter osw=new OutputStreamWriter(fos对象,"编码集");
步骤
  1. 创建字节节点流,声明被操作的文件路径

  2. 创建桥转换流,声明操作文件时所用的编码集

  3. 添加缓冲过滤流,提高数据操作的便捷性

使用

对同一文件的输入输出操作必须保证编解码集一致

package com.by.test2;
​
import java.io.*;
​
public class Test_ISR_OSW {public static void main(String[] args) {try(//创建输出流//创建字节输出节点流FileOutputStream fos=new FileOutputStream("file/m.txt");//创建桥转换流OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");//添加缓冲过滤流PrintWriter pw=new PrintWriter(osw);
​//创建输入流BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("file/m.txt"),"GBK"))
​){//先写pw.println("一二三四五");pw.println("上山打老虎");pw.println("老虎没打着");pw.println("打着小松鼠");//刷新缓冲区pw.flush();//后读while (true) {String s = br.readLine();if (s == null) {break;}System.out.println(s);}}catch...}
}

掌握

  1. 缓冲过滤流的使用

  2. 桥转换流的创建和使用

相关文章:

java基础之IO流之字符流

字符流 传输char和String类型的数据 输入流 抽象父类:Reader 节点流:FileReader 常用方法 int read():读取一个字符,读取到达末尾,返回-1 package com.by.test2; ​ import java.io.FileNotFoundException; import…...

chromium通信系统-ipcz系统(十一)-mojo binding

关于mojo binding的官方文档为mojo docs。 由于比较复杂,这里只做简单源码分析。 我们知道要实现rpc,必须实现客户端和服务端。 mojo 实现了一套领域语言,通过领域语言描述接口和数据, 再通过特有编译器编译成c代码。 这个过程会…...

鸿蒙开发基础-Web组件之cookie操作

使用ArkTS语言实现一个简单的免登录过程,向大家介绍基本的cookie管理操作。主要包含以下功能: 获取指定url对应的cookie的值。设置cookie。清除所有cookie。免登录访问账户中心。 cookie读写操作 首次打开应用时,应用首页的Web组件内呈现的…...

什么是k8s和声明式编程?

认识k8s之后,他的操作模式对我来说是一种很不错的体验。他提供了更接近现实世界的面向对象接口。 什么是k8s? Kubernetes(K8s)是一种开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它简化了容器化应用…...

Fluids —— MicroSolvers DOP

目录 Gas SubStep —— 重复执行对应的子步 Switch Solver —— 切换解算器 Gas Attribute Swap —— 交换、复制或移动几何体属性 Gas Intermittent Solve —— 固定时间间隔计算子解算器 Gas External Forces —— 计算外部力并更新速度或速度场 Gas Particle Separate…...

工业智能网关:HiWoo Box远程采集设备数据

工业智能网关:HiWoo Box远程采集设备数据 在工业4.0和智能制造的浪潮下,工业互联网已成为推动产业升级、提升生产效率的关键。而在这其中,工业智能网关扮演着至关重要的角色。今天,我们就来深入探讨一下工业智能网关。 一、什么…...

Apollo之原理和使用讲解

文章目录 1 Apollo1.1 简介1.1.1 背景1.1.2 简介1.1.3 特点 1.2 基础模型1.3 Apollo 四个维度1.3.1 application1.3.2 environment1.3.3 cluster1.3.4 namespace 1.4 本地缓存1.5 客户端设计1.5.1 客服端拉取原理1.5.2 配置更新推送实现 1.6 总体设计1.7 可用性考虑 2 操作使用…...

魅族MX4pro系统升级、降级

网上的教程都是按住开机键音量上或者下键,但是我按了没用,还是直接点击压缩包管用。 下载系统 官网地址(所有手机固件):https://flyme.cn/firmware.html 官方魅族mx4Pro系统:https://flyme.cn/firmwarelis…...

【Docker】快速入门之Docker的安装及使用

一、引言 1、什么是Docker Docker是一个开源的应用容器引擎,它让开发者可以将他们的应用及其依赖打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之…...

记录汇川:H5U于Factory IO测试13

主程序: 子程序: IO映射 子程序: 辅助出料 子程序: 模式选择 子程序: 示教程序 子程序: 手动程序 子程序: 统计程序 子程序: 异常报警 子程序: 自动程序: F…...

PYTHON通过跳板机巡检CENTOS的简单实现

实现的细节和引用的文件和以前博客记录的基本一致 https://shaka.blog.csdn.net/article/details/106927633 差别在于,这次是通过跳板机登陆获取的主机信息,只记录差异的部份 1.需要在跳板机相应的路径放置PYTHON的脚本resc.py resc.py这个脚本中有引用的文件(pm.sh,diskpn…...

网络配置以及命令详解

传统linux中,网络接口为eth0,eth1,eth2,..... RHEL 7以上版本默认命名是基于分配上的固定名称,ens33 接口类型: en:以太网有线接口 wl:无线局域网接口 ww:无线广域网 dmesg:显示开机信息 适配器类型: s:热插拔插槽 o:板载 p:pci类型 ifconfig ens160(命令行配置,临时生效):查…...

商务外语MR混合现实仿真情景实训教学

MR混合现实技术是一种将虚拟世界与真实世界相结合的技术。通过MR设备,我们可以将虚拟的场景、人物、物品等元素实时地呈现在真实的环境中,实现真实与虚拟的完美融合。在商务外语的实训教学中,MR技术可以为我们提供丰富的场景资源,…...

牛客周赛 Round 28 解题报告 | 珂学家 | 组合数学 + 离散化树状数组

前言 整体评价 还是E稍微有点意思&#xff0c;新周赛好像比预期要简单一些, _. 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红的新周赛 思路: 模拟 #include <bits/stdc.h>using namespace std;int main() {int res 0;for (int i 0; i < 6; i…...

Python系列(3)—— 变量

变量 一、变量命名规范二、变量赋值三、变量的数据类型四、变量的作用域五、变量类型转换 Python编程中&#xff0c;变量是存储数据的容器。它们用于存储各种数据类型&#xff0c;如整数、浮点数、字符串、列表、字典等。理解变量及其工作原理是Python编程的基础。 一、变量命…...

Java 并发性和多线程2

四、如何创建并运行 java 线程 Java 线程类也是一个 object 类&#xff0c;它的实例都继承自 java.lang.Thread 或其子类。 可以用如下方式用 java 中创建一个线程&#xff1a; Tread thread new Thread(); 执行该线程可以调用该线程的 start()方法: thread.start(); 在上…...

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!

原文链接 https://openaigptguide.com/gpt-store-and-chatgpt-team/ OpenAI推出的两款新产品和服务&#xff1a;GPT Store和ChatGPT Team&#xff0c;提供了许多全新的解决方案和功能&#xff0c;旨在帮助用户更轻松地使用和构建GPT工具&#xff0c;同时也增加了公司的收入来源…...

memory泄露分析方法(java篇)

#memory泄露主要分为java和native 2种&#xff0c;本文主要介绍java# 测试每天从monkey中筛选出内存超标的app&#xff0c;提单流转到我 首先&#xff0c;辨别内存泄露类型&#xff08;java&#xff0c;还是native&#xff09; 从采到的dumpsys_meminfo_pid看java heap&…...

kubectlkubeletrancherhelmkubeadm这几个命令行工具是什么关系?

背景 在最近学习k8s的过程中&#xff0c;发现kubectl&kubelet&rancher&helm&kubeadm这几个命令怎么在交错使用&#xff0c;他们究竟是什么关系&#xff1f;他们分别应该在什么情况下使用呢&#xff1f;这里我进行了简单的总结&#xff0c;做个区分。 各工具说…...

Day26 669修剪二叉搜索树 108有序数组转为二叉搜索树 538二叉搜索树转换为累加树

669 修剪二叉搜索树 给定一个二叉搜索树&#xff0c;同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点&#xff0c;所以结果应当返回修剪好的二叉搜索树的新的根节点。 class Solution { pub…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...