JAVA 读文件一定得创建byte数组????为什么?

如题所述

看情况吧...
当然你心情好了可以一个字节一个字节的读;
为什么要用byte,其实java读写文件调用的依然是底层操作系统的接口.
在操作系统层面数据时按照块来读的.
申请byte数组的目的是在jvm中开辟一块空间,然后调用jvm操作指令,jvm根据指令告诉操作系统,把这块数据给我填满.操作系统填满之后,java就返回了.

为什么要用byte?因为byte是数据存储的最小单位了.
所以byte[]数组就是一次性读取多少个最小单位,然后返回.

这只是简单的描述,要更详细的了解,建议读java language specification (jls),jls3好像是1.5,1.6的jls7是jdk1.7的.还有就是操作系统原理相关的书.
只能回答这么多了,再深的我也不懂~
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-08

读取文件一般都用二进制吧,而java的FileInputStream也只支持byte[]。

当然,你也可以用BufferedReader来读文本文件,通过readLine来一行一行读,这个函数返回的是String

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("c:\\youfilepath"),"UTF-8"));

第2个回答  2013-05-08
不一定,读文件的方法有很多,有字符IO,也有字节数据IO,相对而言通过读字节效率要高一些,但是具体用何种方法读文件,这的视情况而定!
第3个回答  2013-05-08
按二进制读,就一定要; 按字符串读,可以不用byte[]追问

如果不按二进制、字符串读呢?

第4个回答  2013-05-08
因为只能读二进制的串,所以。。

JAVA 读文件一定得创建byte数组???为什么?
在操作系统层面数据时按照块来读的.申请byte数组的目的是在jvm中开辟一块空间,然后调用jvm操作指令,jvm根据指令告诉操作系统,把这块数据给我填满.操作系统填满之后,java就返回了.为什么要用byte?因为byte是数据存储的最小单位了.所以byte[]数组就是一次性读取多少个最小单位,然后返回.这只是简单的描述,要...

java 问题:是不是凡是写文件,都必须创建一个字节数组??大小随意?
1.不是必须的。但创建字节数组,可提高对文件的 读取效率; 字节数组起到一个缓存的作用 2, 大小不可随意。1. 大小不可超过64M,因为JVM默认的虚拟机大小就是64M; \/\/也没人这么干 2. 最好取1024的整数倍; \/\/因为文件都精确到KB 于大的文件可用1024*1024为大小 \/\/1M 3.先得到文件...

...Stream类读取输入流时为什么要设置byte数组为byte[1024],设其他的...
这个是用于申请缓冲区内存大小, 提高读写效率.设置其他的也可以. 最好1024的倍数, 不要太小, 也不要太大.

java中为什么要用bytebuffer代替byte操作字节数据?
在Java中,使用ByteBuffer而非直接操作byte[]数组的主要原因,是为了实现统一的数据操作接口。这允许开发者在处理内存数据时,不论是位于Java堆空间内还是堆外内存中,都能采用统一的方式进行操作,而无需关心数据实际存储的位置。直接使用byte[]数组进行操作时,只能针对Java堆内的数据进行处理。然而,当涉...

java读取文件时,InputStream的read(byte[])方法的byte[]的长度不知...
那个长度应该只是缓冲区而已,应该不影响结果的。我做的时候一般都设置为1024,即1KB 这个是我部分的成功代码 inputStream = new BufferedInputStream(new FileInputStream(downloadFile));outputStream = new BufferedOutputStream(response .getOutputStream());byte[] buffer = new byte[1024];int read...

...Java中的byte类型或是byte[]数组主要用在什么情景下呀?请各位不吝...
或者是作为参数传入,比如 String str = new String("hello world");Byte[] b = str.getBytes("iso-8859-1");String myStr = new String(b,"utf-8);这样的场景。读二进制文件的时候,也会将流里的内容读到一个byte数组中去。想到的目前有这些。自己在开发过程中,很少会用到byte类型的 ...

java的字符串转换成byte数组后,遍历出来的的是结果是不是参照了ascii码...
是的,具体来说,应该是按照某个字符集(java默认是utf-8字符集)来进行编码存储的 String s = "ab";byte[] b = s.getBytes();即在数组b中, 存储了97 98 两个数据 相当于:byte[] bt = {97,98};

java:使用io使用byte数组读写文件的时候,是否byte数组越大越好,效率...
您好,提问者:不是,最好定义成1024,这只是推荐。另外你可以根据你的传输大小来定义。如果定义的太大,会占有内存的。

java中byte是什么意思?
Java中的byte是一种基本数据类型,它占用1个字节,即8位,范围在-128到127之间。byte通常用于处理二进制数据或者字节流,比如文件读取、网络传输等。byte的小尺寸使得它在某些场景下使用更加高效,比如在嵌入式系统或者节约带宽传输的环境中。同时,byte还可以通过位运算进行位操作,或者用于存储补码表示二...

java读取文件时 int强制转换为 byte,是如何保证结果正确的??不是损失...
楼主没有真正理解input.read()这个方法,它的返回值是下一个读取的byte值(会自动转换为int),或者-1(表示读到文件尾,注意,这个-1 是int型),而楼主强行将其转换成byte,将不会产生数据溢出,故此结果是正确的,为效率性能计,建议楼主采用public int read(byte[] b)这个方法。

相似回答