java 字节流和字符流的区别 转载

Claude Code × SolidWorks:批量填属性、格式转换、BOM 汇总自动化实战 摘要:本文介绍利用 Claude Code 生成 VBA 宏实现 SolidWorks 批量处理任务的自动化方案。包含5个实战案例:批量填写自定义属性(60分钟任务→10秒)、批量格式转换(80分钟→30秒)、多配置工程图自动生成(120分钟→2分钟)、滚珠丝杠选型计算(15分钟→10秒)和装配体递归BOM导出(40分钟→1分钟)。所有代码基于SolidWorks 2020+ API,提供完整VBA实现和操作指南,可显著提升设计效率。 阅读详情
转载自:http://blog.youkuaiyun.com/cynhafa/article/details/6882061
java 字节流和字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?
实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。  下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。
范例:使用字节流不关闭执行
  1. package org.lxh.demo12.byteiodemo;   
  2. import java.io.File;   
  3. import java.io.FileOutputStream;   
  4. import java.io.OutputStream;   
  5. public class OutputStreamDemo05 {   
  6. public static void main(String[] args) throws Exception {   // 异常抛出,  不处理   
  7. // 第1步:使用File类找到一个文件   
  8.      File f = new File("d:" + File.separator + "test.txt"); // 声明File  对象   
  9. // 第2步:通过子类实例化父类对象   
  10.      OutputStream out = null;           
  11. // 准备好一个输出的对象   
  12.      out = new FileOutputStream(f);     
  13. // 通过对象多态性进行实例化   
  14. // 第3步:进行写操作   
  15.      String str = "Hello World!!!";     
  16. // 准备一个字符串   
  17.      byte b[] = str.getBytes();         
  18. // 字符串转byte数组   
  19.      out.write(b);                     
  20. // 将内容输出   
  21. // 第4步:关闭输出流   
  22.     // out.close();                 
  23. // 此时没有关闭   
  24.         }   
  25.     }  
程序运行结果:  此时没有关闭字节流操作,但是文件中也依然存在了输出的内容,证明字节流是直接操作文件本身的。而下面继续使用字符流完成,再观察效果。
范例:使用字符流不关闭执行
  1. package org.lxh.demo12.chariodemo;   
  2. import java.io.File;   
  3. import java.io.FileWriter;   
  4. import java.io.Writer;   
  5. public class WriterDemo03 {   
  6.     public static void main(String[] args) throws Exception { // 异常抛出,  不处理   
  7.         // 第1步:使用File类找到一个文件   
  8.         File f = new File("d:" + File.separator + "test.txt");// 声明File 对象   
  9.         // 第2步:通过子类实例化父类对象   
  10.         Writer out = null;                
  11. // 准备好一个输出的对象   
  12.         out = new FileWriter(f);           
  13. // 通过对象多态性进行实例化   
  14.         // 第3步:进行写操作   
  15.         String str = "Hello World!!!";     
  16. // 准备一个字符串   
  17.         out.write(str);                   
  18. // 将内容输出   
  19.         // 第4步:关闭输出流   
  20.         // out.close();                  
  21. // 此时没有关闭   
  22.     }   
  23. }  
程序运行结果: 

程序运行后会发现文件中没有任何内容,这是因为字符流操作时使用了缓冲区,而   在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区中的内容是无法输出的,所以得出结论:字符流使用了缓冲区,而字节流没有使用缓冲区。
提问:什么叫缓冲区?
在很多地方都碰到缓冲区这个名词,那么到底什么是缓冲区?又有什么作用呢?
回答:缓冲区可以简单地理解为一段内存区域。
可以简单地把缓冲区理解为一段特殊的内存。
某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能。
在字符流的操作中,所有的字符都是在内存中形成的,在输出前会将所有的内容暂时保存在内存之中,所以使用了缓冲区暂存数据。
如果想在不关闭时也可以将字符流的内容全部输出,则可以使用Writer类中的flush()方法完成。
范例:强制性清空缓冲区
  1. package org.lxh.demo12.chariodemo;   
  2. import java.io.File;   
  3. import java.io.FileWriter;   
  4. import java.io.Writer;   
  5. public class WriterDemo04 {   
  6.     public static void main(String[] args) throws Exception { // 异常抛出不处理   
  7.         // 第1步:使用File类找到一个文件   
  8.         File f = new File("d:" + File.separator + "test.txt");// 声明File   
  9. 对象   
  10.         // 第2步:通过子类实例化父类对象   
  11.         Writer out = null;                  
  12. // 准备好一个输出的对象   
  13.         out = new FileWriter(f);            
  14. // 通过对象多态性进行实例化   
  15.         // 第3步:进行写操作   
  16.         String str = "Hello World!!!";     
  17. // 准备一个字符串   
  18.         out.write(str);                   
  19. // 将内容输出   
  20.         out.flush();                      
  21. // 强制性清空缓冲区中的内容   
  22.         // 第4步:关闭输出流   
  23.         // out.close();               
  24. // 此时没有关闭   
  25.     }   
  26. }  

程序运行结果:  此时,文件中已经存在了内容,更进一步证明内容是保存在缓冲区的。这一点在读者日后的开发中要特别引起注意。
提问:使用字节流好还是字符流好?
学习完字节流和字符流的基本操作后,已经大概地明白了操作流程的各个区别,那么在开发中是使用字节流好还是字符流好呢?
回答:使用字节流更好。
在回答之前,先为读者讲解这样的一个概念,所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是只有在内存中才会形成,所以在开发中,字节流使用较为广泛。
字节流与字符流主要的区别是他们的的处理方式
流分类: 1.Java的字节流    InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。 2.Java的字符流   Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。 InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new 

字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的 但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化 这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联 在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的
在从字节流转化为字符流时,实际上就是byte[]转化为String时, public String(byte bytes[], String charsetName) 有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang 而在字符流转化为字节流时,实际上是String转化为byte[]时, byte[]    String.getBytes(String charsetName) 也是一样的道理
至于java.io中还出现了许多其他的流,按主要是为了提高性能和使用方便, 如BufferedInputStream,PipedInputStream等

相关文章:《Java中字符流与字节流的区别》

智能解译城市进程:遥感影像建筑物提取研究全景与前沿进展(数据集及代码) 随着全球城市化进程的加速,高效、精准地监测城市建筑物分布对城市规划、灾害评估、人口估算及智慧城市建设具有重要意义。传统的人工测绘方法耗时费力,难以满足大范围、动态更新的需求。而遥感影像建筑物提取技术,借助深度学习与计算机视觉,能够自动化识别并提取建筑物轮廓,极大地提升了城市信息获取的效率和精度。首先,建筑物提取是遥感影像解译的核心任务之一。 阅读详情

相关推荐

STM32 热敏电阻测量温度

1、硬件 STM32F103C8T6、热敏电阻传感器、OLED。 2、热敏电阻传感器的介绍

weixin_54721788的博客 1万+

JAVA_IO 流_大全(学习笔记ing)

IO:input output 输入和输出流通过IO流实现对文件的读写操作流Stream: 一组,有序的,有起点有终点的动态数据集合文件是数据在硬盘的静态存储流是数据在传输是的动态形态 输入流:磁盘文件读取到程序中 输出流:程序写到磁盘文件中。

ro_ta_tion的博客 185

华硕ROG枪神双系统实战:Ubuntu安装避坑指南

本文是华硕ROG枪神笔记本安装Ubuntu双系统的详细避坑指南。针对其独特的硬件与BIOS设计,文章核心解决了VMD控制器导致硬盘无法识别、驱动兼容性等关键难题,并提供了从BIOS设置、分区方案到安装后驱动配置与性能调优的一站式解决方案,帮助用户实现稳定的双系统体验。

raspberrypi5的博客 545

JAVA中的字节流和字符流

把数据从其他设备读取到内存中的流把数据从内存写出到其他设备上的流以字节为单位,进行输入和输出的流以字符为单位,进行输入和输出的流。

星空的星星的博客 1178

一文搞懂 Transformer 工作原理 !!

本文将从单头Attention工作原理多头Attention工作原理全连接网络工作原理三个方面,实现一文搞懂Transformer的工作原理。Transformer工作原理。

不要给自己设限,尝试更多可能(思所向 皆可往) 2990

关于StartAI本地部署相关问题解答

很多小伙伴们都有接入自己本地SD的需求,对此小编整理了一些相关问题~

HDJ9387的博客 940

File类与IO流知识总结(二):字节流、字符流、IO异常处理和 属性集

一:IO概述 1.1 什么是IO 生活中,我们肯定经历过这样的场景。当你编辑一个文本文件,忘记了 ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。 我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出output ,即流向内存是输...

洺润Star的博客 544

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

m0_69718028的博客 8116

java中字符流和字节流的区别_java中字节流和字符流有哪些区别

java中字节流和字符流的区别有:1、定义不同;2、结尾不同;3、处理方式不同;4、缓冲区不同;5、编码方式不同。字节流默认不使用缓冲区,而字符流使用缓冲区。字节流采用ASCII编码,字符流采用unicode编码。流是一系列随时间而可用的数据;源将数据生成为流,目标消耗或读取数据可用作流。换句话说,流解释了允许读或写的数据流。在Java中执行流操作的两种方式是使用字节流和字符流。下面我们就来简单了...

weixin_42699679的博客 6436

树莓派4B+红外传感器:手把手教你DIY一个能走黑线的智能小车(Python代码全解析)

本文详细介绍了如何使用树莓派4B和红外传感器DIY一个智能循迹小车,包括硬件配置、GPIO连接、Python代码实现及优化算法。通过动态PWM调速、状态机设计和赛道记忆算法,提升小车的循迹性能和稳定性。适合初学者和电子爱好者动手实践。

weixin_29188043的博客 269

10、犹豫双模糊TOPSIS算法:原理与实例解析

本文介绍了犹豫双模糊TOPSIS算法的基本原理与应用步骤,结合中国四家纺织公司的案例,详细解析了从构建犹豫双模糊决策矩阵、归一化处理、专家信息聚合,到确定正负理想解、计算距离与相对贴近度系数的完整决策流程。该方法有效应对决策者在评价过程中的犹豫性,适用于财务评估、项目选择等复杂多属性决策场景,具有较强的实用性和推广价值。

yhn45678901的博客 122

11-java 字节流和字符流的区别 转载

转载自:http://blog.youkuaiyun.com/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。 下面以两个写文件的操作...

犟驴的博客 269

链接文件及功能安全:英飞凌官方文档摘录 - 基于Tasking与AURIX TC3xx MCAL中Link文件解析以及代码变量定位方法详解

Data区域是用来存放带初始化值的全局变量,在link文件中,这个区域有两种类型,预先定义的区域和默认区域。预先定义的Data区域,例如.data.Ifx_Ssw_Tc1和.data.Cpu1_Main.*,在cpu1_main.c中如果定义了一个带初始化值的变量,则它会放在DSRAM1中的.data.Cpu1_Main.*段中。

梦想技术家 539

【转载】java字节流与字符流的区别

原文地址:http://blog.youkuaiyun.com/cynhafa/article/details/6882061 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。 下面以两个写文件的操作为主进行比较,但是在

qingning1的专栏 299

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java 字节流与字符流的区别(转载)

java 字节流与字符流的区别(转载)   字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?    实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如下图所示。      下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。    范例

twoonenew的博客 210

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java超长字符序列化_转载:Java的字节流、字符流和序列化区别

原文出处链接:https://blog.youkuaiyun.com/qq_17310871/article/details/100516118Java IO流牢记六个字:读进来,写出去对象序列化对象序列化与反序列化:将Java对象转变成字节流存储,称之为对象序列化。从字节流中恢复一个Java对象,称之为对象反序列化。 即是说,将对象转化为二进制,用于保存,或者网络传输。序列化资格:只有实现了 Seriali...

weixin_28751115的博客 153

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

字符流与字节流的区别

字符流与字节流的区别 (尊重劳动成果,转载请注明出处:https://blog.youkuaiyun.com/cynhafa/article/details/6882061陈江玉的博客) 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示...

Wangz的博客 6万+

Java字节流和字符流的区别?

字符流:就是在字节流的基础上,加上编码,形成的数据流 字符流出现的意义:因为字节流在操作字符时,可能会有中文导致的乱码,所以由字节流引申出了字符流。 程序中所有的数据都是以流的方式进行传输或保存的,字节流主要操作type类型的数据,以type数组为准。 java中字节流与字符流的区别: 1、读写的时候一个是按字节读写,一个是按字符。 2、在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。 3、以stream结尾都是字节流,r

ZhaZha__Hui的博客 2032

【Java】字节流和字符流的区别

转载:https://blog.youkuaiyun.com/cynhafa/article/details/6882061 注意try...catch... try后面()会自动释放资源的,表面是没有关闭,其实是关闭流了,这个jdk1,7的新特性,叫自动资源管理 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。 下面以两个写文件的操

winrh的博客 611

java中的字节流和字符流有什么区别

先看问题java中的字节流和字符流有什么区别呢?java中的字符流和字节流的区别字节流1.字节流在操作的时候不会用到缓冲区(也就是内存)2.字节流可用于任何类型的对象,包括二进制对象3.字节流处理单元为1个字节,操作字节和字节数组。InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。字符流1.而字符流在操作的时候会用到缓冲区2.而字符流只能处理字符或者字...

weixin_34419321的博客 350
上一篇: Java垃圾回收机制
下一篇: Java 输入输出流 转载
鹿晗的晗
博客等级 码龄16年 22粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值