我们知道在文件读取的时候,会遇到字符和字节的读取问题。字节和字符是一个容易混淆的概念:下面以一个例子来说明一下:
public class Test {
public static void main(String[] args) {
String str = "my test"; byte[] bt = str.getBytes();
System.out.println(bt.length);
}
}
这个结果还是什么呢?估计会有很多对于字符和字节有了解的人,说结果是14,可是呢,结果确实7。这是为什么呢?
不是一个字符两个字节么,这在课本上写的很清楚啊!,其实是没理解清楚在这里并不是这么回事的。我们来分析一下,这段代码了有这一句话,byte[] bt = str.getBytes();,这里bt是一个字节数组,把字符存在了字节数组里,这里有个方法:getBytes(),帮助文档是这么解释的:
Encodes this String into a sequence of bytes using the platform's default charset, storing the result into a new byte array.
它是将每个字符转化为一个字节存储在字节数组里了,所以,我们就不能简单的理解为,一个字符两个字节了。看完下面这个例子估计,你就明白了:
public class Test {
public static void main(String[] args) {
String str = "my test"; char ca[] = str.toCharArray();
System.out.println(ca.length);
}
}
这里输出的就是我们想要的结果14.。
总结一下子:
char c = '中' 这里就有两个字节
char c1 = 'a' 这里也是两个字节
第二个字节是空字节一个中文字符占两个字节
一个中文标点符号(或全角英文标点)
两个字节一个英文字符占一个字节
一个半角英文标点符号占一个字节
一个半角空格占一个字节
一个全角空格占两个字节
例子如下:
String str = "我是 中国人" 空格是半角的 输出是 11
String str = "我是,中国人" 标点是半角的 输出是 11
String str = "我是,中国人" 标点是全角的 输出是 12
相关推荐
但是为了使后台接收上传文件的方法既使用网页上传,又适应桌面应用程序上传,方法的参数设置成两个,一个为字符串类型,接收文件名,另一个为字节数组类型,用于接收文件内容。对于桌面应用,把文件内容读取到字节...
用字节流、字符流处理对数据的读取和写入。OutputStreamWriter
介绍php字符串与byte字节数组转化类,转换一个String字符串为byte数组,将字节数组转化为String类型的数据,转换一个int为byte数组,从字节数组中指定的位置读取一个Integer类型的数据,转换一个shor字符串为byte...
程序从文件上读入内容(字符串),长度不定,但长度是5字节的偶数倍, 在程序中对该字符串,按5字节进行拆分,两两将位置互换,最后倒序打印输出。
字节流与字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类...
labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习
简单讲述了 双字节 多字节 宽字节 Unicode之间的关系及转换
使用RandomAccessFile 流读取hello.txt文件舍弃其前4行 和 后 6行的内容,并将其他行的内容倒置读出。程序尽量做到通用性,可以读取任何一个文件。 可以自己随便创建一个hello.txt文件作为测试用(其中可能包含中文...
java 读取字节流的例子,非常好。本例用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区buffer中,再以FileOutStream的write(buffer)方法,将buffer中内容写入文件WriteFile.txt中,程序如下(本例程序放在...
JavaIO实例,包括:字节流、字符流、缓冲流、转换流
主要介绍了Python read函数按字节(字符)读取文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
从DLL收读取字符串时遇到中文乱码,这里总结一下C#收取字符串时的处理。 C/C++字符串一般通过char* 或wchar_t*来表示,char*表示的是ANSCII字符串, wchar_t*表示Unicode字符串,Unicode字符串在C/C++中一个...
C#上位机读取欧姆龙plc数据
java文本读取方法 1、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文件内容 4、随机读取文件内容
Java 读取文件操作 java中多种方式读文件 一、多种方式读文件内容。 1、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文件内容 4、随机读取文件内容
字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。它的原型为: int fgetc (FILE *fp); fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时...
C# 读取西门子PLC DB块数据DEMO
这个类库可以实现 1.转换一个String字符串为byte数组 2.将字节数组转化为String类型的数据 3.转换一个int为byte数组 4.从字节数组中指定的位置读取一个Integer...6.从字节数组中指定的位置读取一个Short类型的数据
本篇文章主要介绍了Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,对初学者很有用,有需要的朋友可以了解一下。