java基础之IO流之字符流
字符流
传输char和String类型的数据
输入流
-
抽象父类:Reader
-
节点流:FileReader
常用方法
-
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
常用方法
-
write(int ):向目标文件写入一个字符
-
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
方法
-
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更多更实用
-
方法
-
print(值):向目标文件写入一个数据,默认不换行
-
println(值): 向目标文件写入一个数据,默认换行
-
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对象,"编码集");
步骤
-
创建字节节点流,声明被操作的文件路径
-
创建桥转换流,声明操作文件时所用的编码集
-
添加缓冲过滤流,提高数据操作的便捷性
使用
对同一文件的输入输出操作必须保证编解码集一致
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...}
}
掌握
-
缓冲过滤流的使用
-
桥转换流的创建和使用
相关文章:
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稍微有点意思,新周赛好像比预期要简单一些, _. 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红的新周赛 思路: 模拟 #include <bits/stdc.h>using namespace std;int main() {int res 0;for (int i 0; i < 6; i…...
Python系列(3)—— 变量
变量 一、变量命名规范二、变量赋值三、变量的数据类型四、变量的作用域五、变量类型转换 Python编程中,变量是存储数据的容器。它们用于存储各种数据类型,如整数、浮点数、字符串、列表、字典等。理解变量及其工作原理是Python编程的基础。 一、变量命…...
Java 并发性和多线程2
四、如何创建并运行 java 线程 Java 线程类也是一个 object 类,它的实例都继承自 java.lang.Thread 或其子类。 可以用如下方式用 java 中创建一个线程: Tread thread new Thread(); 执行该线程可以调用该线程的 start()方法: thread.start(); 在上…...
最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!
原文链接 https://openaigptguide.com/gpt-store-and-chatgpt-team/ OpenAI推出的两款新产品和服务:GPT Store和ChatGPT Team,提供了许多全新的解决方案和功能,旨在帮助用户更轻松地使用和构建GPT工具,同时也增加了公司的收入来源…...
memory泄露分析方法(java篇)
#memory泄露主要分为java和native 2种,本文主要介绍java# 测试每天从monkey中筛选出内存超标的app,提单流转到我 首先,辨别内存泄露类型(java,还是native) 从采到的dumpsys_meminfo_pid看java heap&…...
kubectlkubeletrancherhelmkubeadm这几个命令行工具是什么关系?
背景 在最近学习k8s的过程中,发现kubectl&kubelet&rancher&helm&kubeadm这几个命令怎么在交错使用,他们究竟是什么关系?他们分别应该在什么情况下使用呢?这里我进行了简单的总结,做个区分。 各工具说…...
Day26 669修剪二叉搜索树 108有序数组转为二叉搜索树 538二叉搜索树转换为累加树
669 修剪二叉搜索树 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 class Solution { pub…...
Spring AI + DeepSeek 实战:5分钟搞定一个能听懂人话的数据库查询工具
Spring AI DeepSeek 实战:5分钟搞定一个能听懂人话的数据库查询工具 在数据驱动的时代,数据库查询是每个开发者绕不开的日常任务。但当你面对产品经理频繁变更的需求,或是运营同事临时提出的数据提取请求时,反复编写和调试SQL语句…...
微信H5页面如何通过wx-open-launch-weapp标签跳转小程序?完整配置指南
微信H5跳转小程序全链路实战:从零配置wx-open-launch-weapp标签 在移动互联网生态中,微信H5与小程序的无缝跳转已成为提升用户体验的关键技术节点。许多开发者首次接触wx-open-launch-weapp标签时,往往会在业务域名验证、HTTPS部署等环节遭遇…...
SmallThinker-3B-Preview惊艳表现:复杂逻辑推理任务准确率提升实测报告
SmallThinker-3B-Preview惊艳表现:复杂逻辑推理任务准确率提升实测报告 最近,一个名为SmallThinker-3B-Preview的小模型在技术社区里悄悄火了起来。你可能要问,现在动辄几百亿参数的大模型满天飞,一个只有30亿参数的“小家伙”有…...
大模型数据治理终极指南:5个关键步骤实现高效生命周期管理
大模型数据治理终极指南:5个关键步骤实现高效生命周期管理 【免费下载链接】Foundations-of-LLMs 项目地址: https://gitcode.com/GitHub_Trending/fo/Foundations-of-LLMs 大模型数据治理是构建高质量AI系统的基石,对于确保模型性能、合规性和可…...
开发效率翻倍:用快马智能推荐最佳排序算法,告别性能焦虑
今天想和大家分享一个提升开发效率的实用技巧——如何快速找到最适合当前场景的排序算法。作为开发者,我们经常需要处理各种排序需求,但面对不同规模、不同特征的数据集时,如何选择最优算法往往让人头疼。 数据准备阶段 在实际项目中…...
实战复盘:我是如何用Turbo Intruder的race.py脚本,5分钟挖到一个高并发订单漏洞的
高并发漏洞狩猎实录:从Turbo Intruder脚本调优到电商系统攻防实战 去年在一次众测项目中,我偶然发现某电商平台的积分兑换系统存在并发处理缺陷。这个漏洞最终被评级为高危,而整个挖掘过程只用了不到5分钟——关键就在于对Turbo Intruder的ra…...
别再一条条Update了!MyBatis批量更新数据,用这个Case When写法性能翻倍
MyBatis批量更新性能优化实战:告别低效循环,拥抱CASE WHEN 每次看到代码里用循环一条条执行update语句,我的数据库性能监控图表就会剧烈波动——这简直是DBA的噩梦。上周排查一个后台任务卡死问题,发现同事在处理5万条数据更新时&…...
避坑指南:Cypress CYT4B的Mcal CAN配置,这5个参数配错直接通信失败
Cypress CYT4B的Mcal CAN配置实战:5个致命参数解析与避坑策略 实验室里,示波器上的CAN波形杂乱无章,工程师反复检查硬件连接却始终无法建立稳定通信——这可能是许多嵌入式开发者调试CYT4B系列芯片时的真实写照。当硬件排查无果后,…...
基于MATLAB的数字图像处理系统:预处理、特征提取与语义分割全流程实现
数字图像处理系统(基于matlab) 此系统包括预处理,特征提取,语义分割 使用机器学习算法knn和svm 预处理包括线性灰度级变化,指数灰度级变化,直方图均衡化,高斯滤波,中值滤波ÿ…...
如何通过WebGLInput彻底解决Unity WebGL平台的输入法兼容性问题
如何通过WebGLInput彻底解决Unity WebGL平台的输入法兼容性问题 【免费下载链接】WebGLInput IME for Unity WebGL 项目地址: https://gitcode.com/gh_mirrors/we/WebGLInput 你是否曾尝试在Unity WebGL应用中实现中文输入,却发现输入法无法正常工作…...
