java中如何把一个文件转化为byte数组

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

public class Test {

public static void main(String[] args) {

// TODO Auto-generated method stub

try{

getBytesFromFile(new File("C:\\aaa.txt"));

}catch(IOException e){

System.out.println("IOException");

}

}

// 返回一个byte数组

public static byte[] getBytesFromFile(File file) throws IOException {

InputStream is = new FileInputStream(file);

// 获取文件大小

long length = file.length();

if (length > Integer.MAX_VALUE) {

// 文件太大,无法读取

throw new IOException("File is to large "+file.getName());

}

// 创建一个数据来保存文件数据

byte[] bytes = new byte[(int)length];

// 读取数据到byte数组中

int offset = 0;

int numRead = 0;

while (offset < bytes.length

&& (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {

offset += numRead;

}

// 确保所有数据均被读取

if (offset < bytes.length) {

throw new IOException("Could not completely read file "+file.getName());

}

// Close the input stream and return bytes

is.close();

return bytes;

}

}

⑵ java中的byte有什么作用

byte即字节的意思,是java中的基本类型,用心申明字节型的变量。

通常在读取非文本文件时(如图片,声音,可执行文件)需要用字节数组来保存文件的内容,在下载文件时,也是用byte数组作临时的缓冲器接收文件内容。所以说byte在文件操作时是必不可少的。不管是对文件写入还是读取都要用到。

⑶ Java如何向文件中写byte数组

写byte数组不能用Writer,否则不可见字符会被转换掉 FileOutputStream fos = new FileOutputStream(d:/b.txt); Writer out= new BufferedWriter(new OutputStreamWriter(fos)); out.write(0xC9); out.write(0x99); out.close();

⑷ Java中什么是字符文件,什么是字节文件

理论上没有本质区别。

所有的文件都是以二进制存储的,文件只有“文本文件”和“不是文本文件”这两种。只是因为里面的数据不同或者解析数据的方式不同而导致你看到的结果不同。下面给你非常详细的解释:

“字符文件”确切的说法应该是文本文件。说过了,它也是以二进制存储的,并且是连续的(一大串 1 和 0 组成的数字,没有任何标记隔开),而在读取的时候由程序把它断开。最简单的例子,扩展的 ASCII 码存储的文本文件,其中每个字符占 8 位(正好是一个字节),那么在读取此文件的时候程序会 8 位一读,也就是 1 个字节(字符)一读。读完 8 位再读下 8 位,直达文件末尾或者手动结束。“流”这个概念就是这么来的。每次读入一个字符就可以称为字符输入流,但本质上是一个比特(位)流。

然后“字节文件”,当然你可以这么叫,不过要和文本文件区分的话一般叫“二进制文件”,虽然本质上没区别。所有的文件都是二进制文件,其实所有的文件也都是字节文件。因为字节也基本是数据的最小单位了(比特当然更小,但是比特是计算机处理数据时的单位,字节是最小数据块的单位)。上面的 ASCII 的“文本文件”是一种特殊的字节文件,每个数据块就是一个字节。而一般的字节文件中,数据块可以是任何数据类型,可以是 16 位的 short,32 位的 int,也可以是 32 位的 float,等等类型,一般叫“二进制文件”。读此类文件的时候必须要对应好,该是 short 的地方就读入 2 个字节,该是 int 的地方就该读入 4 个字节,一旦错了所有后面的数据就可能都读错了。这个“流”你可以随意称呼,可以叫“数据流”,因为各种类型的数据都有,只能统称为“数据”,但本质上就是二进制的比特流。

另外,你说记事本打开乱码的是“字节文件”,首先上面说过了,文本文件本身是一种特殊的字节文件;其次记事本打开只要不是乱码的必然是文本文件,因为它显示的是良好的文本,而记事本打开是乱码的不一定就不是文本文件,可能是编码格式的原因。这个又牵扯到编码格式,太多了,实在没办法些这里,你到我空间有编码格式的文章可以看。

不知道你看懂了没有?可能写得有点乱,但你学下去就会明白的。

⑸ java byte数组写入本地文件,那这个文件是二进制文件吗不是的话,是什么文件跪求解答啊

所有的文件都可以看成二进制文件,因为硬盘里只能保存0和1 。至于是否文本文件,需要确认里面的内容才行。

⑹ java中byte[]是怎么意思

byte即字节的意思,是java中的基本类型,用心申明字节型的变量。

通常在读取非文本文件时(如图片,声音,可执行文件)需要用字节数组来保存文件的内容。

在下载文件时,也是用byte数组作临时的缓冲器接收文件内容。所以说byte在文件操作时是必不可少的。不管是对文件写入还是读取都要用到。

(6)javabyte文件扩展阅读:

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

Java语言是一门随时代快速发展的计算机语言程序,其深刻展示了程序编写的精髓,加上其简明严谨的结构及简洁的语法编写为其将来的发展及维护提供了保障。

由于提供了网络应用的支持和多媒体的存取,会推动Internet和企业网络的Web的应用。

⑺ java文件转换为byte数组

那你可以把文件的都分成 一小部分来写啊

如:

FileInputStreamins=newFileInputStream(file);//定位流
BufferedInputStreambr=newBufferedInputStream(ins);//读取流
OutputStreamous=response.getOutputStream();

/*这段应该内就是你原本的写法*/
/*byteb[]=newbyte[(int)file.length()];
while(br.read(b)!=-1){
//将b中的容数据写到客户端的内存
ous.write(b);
}*/

/*改成这种就可以了*/
byteb[]=newbyte[1024];
intlen=0;
while((len=br.read(b))!=-1){
ous.write(b,0,len);
}

望点赞,加分

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

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

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

这只是简单的描述,要更详细的了解,建议读java language specification (jls),jls3好像是1.5,1.6的jls7是jdk1.7的.还有就是操作系统原理相关的书.
只能回答这么多了,再深的我也不懂~

⑼ Java如何自定义的byte[]数组写入文件

FileOutputStream.write(byte[] bytes)写入文件的是二进制码,你写入二进制1和0是不可见字符,必须用二进制/16进制文件格式打开才可以看到,