`
zhaoqingqing
  • 浏览: 5369 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

按字节读取与按字符读取

阅读更多

       InputStream基与字节(一个byte一个byte的读取)读取的输入流,它是java.io包中的一个抽像类
       InputStream中定义了如下几个重要的方法,其中有一个read()方法:
       int read():这个方法调用会返回流中的下一个字节做为一个byte值,如果流己读到末尾,则会返回-1,即表示流中数据己读完;

        注意,此方法返回虽为int型,实际上是从流中读取的一个byte,即8bit,如果要从流中读取一个int型返回,则需要用后面所讲的DataInput对象的readInt()方法,才是读取四个byte,即32位长度;
        FileInputStream中InputStream的一个直接字类,可用于构造从文件中读到数据的流,创建一个FileInputStream对象可以使用如下两个常用的构造器:
        FileInputStream(File file) :通过一个文件对象做参数构造输入流对象;
        FileInputStream(String name):传入一个字符串(文件路径名)构造连结到指定文件的输入流;

 

       public class FileReader  extends InputStreamReader用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先

在 FileInputStream 上构造一个 InputStreamReader。

        FileReader 用于读取字符流。

       为了区分按字节与按字符读取的区别,我们做了一个测试,测试按着两种读取方法读取同一个文件所需的时间有什么不同。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class SaveData {
	
	//字符读取
	public void Fileread(){
		FileInputStream fis = null;
		try {
			fis = new FileInputStream("E:/write.txt");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		long time1=System.currentTimeMillis();
		try {
			while(fis.read()>0){
				
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		long time2=System.currentTimeMillis();
		System.out.println("字节读取共用"+(time2-time1));
		
		
		
	
		
	}
	//字节读取
	public void Bread(){
		FileReader fr=null;
        try {
			 fr=new FileReader("E:/write.txt");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		long time1=System.currentTimeMillis();
		try {
			while(fr.read()>0){
				
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		long time2=System.currentTimeMillis();
		System.out.println("字符读取用时间为"+(time2-time1));
		
	}
	public static void main(String[] args){
		SaveData sd=new SaveData();
	    try {
			sd.Fileread();
			sd.Bread();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

        由运行结果我们可以看出按字符读取的时间要比按字节读取短近10倍。

  不同的方法一定会有他们的区别,我们通过多多的练习会发现他们的不同,了解了他们的区别才会更有效的运用适当的方法。

 

分享到:
评论

相关推荐

    asp.net c# String类添加按字节截取字符串的扩展方法

    在ASP.NET C#开发环境中,处理字符串是一项常见且重要的任务,尤其是在需要对字符串进行精确控制的情况下,如按字节截取字符串。本文将详细介绍如何为C#中的`String`类添加一个扩展方法,该方法允许我们按照字节而非...

    计算字符串中的单双字节字符个数

    这段代码通过`LenB`函数获取字符串的字节数,然后使用`MidB`函数逐字节读取。如果字节值小于等于127,则认为是单字节字符,否则认为是双字节字符。最终返回一个数组,包含单字节和双字节字符的数量。 在实际应用中...

    如何处理错误ORA-29275:部分多字节字符

    该错误的出现意味着在查询结果中存在一些多字节字符(通常是汉字或其他非英文字符)未能正确读取或解析,导致数据不完整或者格式异常。 #### 错误原因分析 在深入探讨解决方案之前,我们首先需要了解ORA-29275错误...

    C#上位机基础学习-基于S7.Net实现读取S7-1500PLC中的字符串变量.docx

    为了读取字符串变量,我们需要在button1的Click事件处理程序中编写代码。使用S7Client的ReadBytes方法,指定DB块号(如5)、DB块内变量的偏移地址(如534)以及字符串长度(256个字节)。这个方法会返回一个字节数组...

    java 读取文件 文件读取操作

    本文将详细介绍Java中四种不同的文件读取方法:按字节读取、按字符读取、按行读取以及随机读取。 1. **按字节读取文件内容** Java中`java.io.FileInputStream`类提供了按字节读取文件的功能。这种方法适用于读取二...

    java字节与字符

    - **字符输入流**:用于从文件或设备中读取字符数据,顶级抽象类为`Reader`。 ##### 3.1 Writer `Writer`是字符输出流的顶级抽象类,它提供了类似`OutputStream`的方法来实现数据的写入功能,但操作的是字符而不是...

    长度是5字节的偶数倍的字符串,按5字节进行拆分,两两将位置互换

    3. 使用循环按5字节切割字符串,得到子串列表。 4. 对子串列表进行两两位置互换,可以使用两个嵌套循环来实现。 5. 将互换后的子串列表合并成新的字符串。 6. 反转新字符串并打印输出。 通过以上步骤,我们能够实现...

    JAVA 字符流与字节流

    在Java编程语言中,输入/输出(I/O)操作是处理数据流的关键部分,而字符流与字节流则是实现这些操作的两种基本方式。理解它们的区别和应用场景对于任何Java开发者来说都是至关重要的。 ### 字节流 字节流是最基本...

    字节流实现从文件以字节读取信息

    本文将详细介绍如何使用Java中的字节流技术来实现从文件中按字节读取信息,并将其转换为字节数组。 #### Java中的字节流简介 Java提供了一套强大的流处理机制,使得开发者能够方便地进行数据的读写操作。字节流是...

    [Java]读取文件方法大全.pdf

    本文将详细介绍四种常见的文件读取方法:按字节读取文件内容、按字符读取文件内容、按行读取文件内容和随机读取文件内容。 一、按字节读取文件内容 按字节读取文件内容是指以字节为单位读取文件的内容,这种方式常...

    超实用c#按字节截取长度(原创)

    根据给定文件的信息,本文将深入探讨如何在C#中实现一种高效的按字节截取字符串的方法,尤其针对包含单字节与双字节混合字符的情况。这种方法特别适用于处理中文等双字节字符与英文等单字节字符混合的情况。 ### 一...

    Java字节流数据逐行读取(readLine)

    然而,`readLine()`方法通常与字符流Reader类关联,而不是字节流InputStream类。因此,要使用字节流实现数据逐行读取,我们需要结合`BufferedReader`和`InputStreamReader`。 首先,理解`readLine()`方法。它是`...

    java读取文件方法大全

    使用`FileInputStream`按字节读取文件。通过`in.read()`逐字节读取直到返回-1,表示文件结束。 2. **字节数组读取**: 使用字节数组`byte[] tempbytes = new byte[100];`一次读取多个字节。通过`in.read...

    易语言字节集文件的十六进制和文本的读取操作

    本文将深入探讨易语言字节集文件的十六进制和文本的读取操作,帮助开发者理解如何有效地处理这类文件。 首先,字节集文件是二进制数据的容器,它可能包含任何非文本格式的信息,如图片、音频、程序代码等。在易语言...

    Java字节流与字符流的介绍.pdf

    Java 字节流与字符流的介绍 Java 中的流操作可以分为两种:字节流和字符流。字节流是指以 byte 为单位进行读写操作的流,而字符流是指以 char 为单位进行读写操作的流。 字节流的介绍 字节流的所有读操作都继承自...

    双字节 多字节 宽字节 Unicode

    综上所述,双字节、多字节、宽字节与Unicode是解决不同语言字符编码问题的重要手段。它们各自适用于不同的场景,但最终目标都是为了实现全球范围内的字符兼容性和统一性。对于开发者而言,理解和掌握这些编码方式的...

    Excel VBA 按byte截取字符串

    Excel VBA 里面有个function可以按byte读取字符串

    读取字符流

    用字节流、字符流处理对数据的读取和写入。OutputStreamWriter

    C#(.net)中按字节数截取字符串最后出现乱码问题的解决

    最近需要用到按字节数截取字符串。在网上找了很多方法。 Encoding.Default.GetString采用的Default Encoding.UTF8.GetBytes采用的是utf-8编码。这样当然是乱码。尤其出现中文时候。 对这类数据处理当然要用统一的...

    二进制字节与字符串之间的转换

    你可以通过运行这个程序,观察输入图片文件和输出的字符串,理解二进制字节与字符串之间的转换过程。同时,也可以通过反向转换验证数据是否能准确还原,确保图片的质量和完整性不受影响。 总之,理解和掌握二进制...

Global site tag (gtag.js) - Google Analytics