java文件字节流
① java之字符流与字节流的区别和联系
字符流处理的单元为2个字节的unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,
操作字节和字节数组。所以字符流是由java虚拟机将字节转化为2个字节的unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是
音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;
2.
字节流提供了处理任何类型的io操作的功能,但它不能直接处理unicode字符,而字符流就可以。
② java中如何做文件字节输入流
首先,我以往经验是写入字节流和输出字节流的方式一定要一致,不然写入的字节流就会出错甚至读取不到,下面是字节流的写入和读取方法:
importjava.io.*;
classTest{
publicstaticvoidmain(Stringargs[]){
FileInputStreamfis=null;
FileOutputStreamfos=null;
byte[]buffer=newbyte[100];
inttemp=0;
try{
fis=newFileInputStream("D:/wenhao/src/from.txt");
fos=newFileOutputStream("D:/wenhao/src/to.txt");
while(true){
temp=fis.read(buffer,0,buffer.length);
if(temp==-1){
break;
}
fos.write(buffer,0,temp);
}
}
catch(Exceptione){
System.out.println(e);
}
finally{
try{
fis.close();
fos.close();
}
catch(Exceptione2){
System.out.println(e2);
}
}
}
}
③ Java中字符流和字节流都是用在什么地方(不要传统解释,用自己的意思说出来)
字节流:这个底层用得最多
1、网络传输:基本传输的都是字节(如HTTP传输、或你调别人的接口(用AES加密)等)
2、读取本地非文本文件:如要读取 一张图片,这时肯定只能用 字节流
字符流:
1、这种最常用于读本地的 文本文件,如读一个 .java、.txt文件等
④ Java字符流和字节流对文件操作的区别
Java字符流是处理字符(Char)对象用的,字节流是处理字节(Byte)对象用的。处理的目标对象不同,处理方法也就不一样了。
字符流处理的基本单位是字符(Java中的字符是16位的),输入流以Reader为基础,输出流以Writer为基础;
字节流的基本单位是字节(Java中的字节是8位的),输入流以
InputStream为基础,输出流以
OutputStream为基础;
字符流在输入时可以按字符读取,也可以按行读取,会去掉回车换行,常用于读取字符数据;
而字节流按字节读取,不作任何处理,常用于读取二进制数据。
Java中的字符在内部都是使用Unicode进行表示的,因此,要正确读取字符数据,需要知道字符的编码字符集,字符流提供编码字符集的指定,如果不指定使用系统默认的方式对字符数据进行编码转换,这个编码字符集不正确,会造成读进来的地字符出现乱码。
字节流虽然是读取二进制数据用的,但也可以读取字符文件,按字节进行处理,读进来之后可以根据编码字符集进行转换,也可以变成字符串。
⑤ java文件字节流和字符流最好两个版本
其实就是字节与字符的区别。file****stream不能正确的将字节转换为字符。 你不需要纠结原因,这是java 1.0的io设计问题。在java编程思想这本书里面有解释。 你只需要记住一点:读取的时候用filereader去读。 纯手打,请采纳。
⑥ java什么叫字节流
字节流(byte stream) 不包含边界数据的连续流 字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的lang 流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。
⑦ java字节流,字符流问题怎么判断一个文件要用字节流还是用字符流
有中文就用字符流,没中文可以用字节流,这个应该根据你具体情况而定,就是看这个文件里面内容的字符是什么样的,像中文就是一个字节放不下,需要用两个字节来存储,那么字符流一个字符一个字符的往里读,所以能读出来,你用字节流就不行了,一个字符一个字符的往里读,把一个汉字拆成一半了,到时候操作系统不认识,显示都问号,
一看到二进制你有啥不明白的,好多人都知道java里面1个字符等于2个字节,1个字节等于8位,像背顺口溜一样,其实啥意思都不知道,我都服了,1个字节等于8位,8位啥呀?2进制代码啊,也就是01序列,这个序列是8位数,中文比较大,得占16位,所以是2个字节。
答案补充
第三行打错字了,是:用字节流就不行了,一个字节一个字节的往里读
答案补充
谁拷贝答案了,哪些答案都是垃圾,没一个正确的,我拷贝它干什么,
内存的存储体上面分若干个存储单元,一个存储单元可以存储8位或者16为,或者32位的,或者....的01序列,一个字节等于8位,比如11111111,一个汉字在计算机内部要使用2个字节来存储,一个装不下,也就是16位的01,你用字节流读,一下读8位出来,还有8位给人家仍了那能行,么
答案补充
赶紧看
计算机组成原理
去吧
⑧ java读取文件问题该选字节流还是字符流
如果文本文件通常使用字符流,而像视频、图片、音频等文件都是二进制数据,使用字节流,当然文本文件也是可以通过字节流来读取和写入的,字节流更通用,字符流只不过是对字节流进行了封装,查表操作。希望可以帮到你的疑问
⑨ java的字符流与字节流到底有什么区别
Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据。Java中最基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流。InputStream类与OutputStream类均为抽象类,我们在实际使用中通常使用Java类库中提供的它们的一系列子类。下面我们以InputStream类为例,来介绍下Java中的字节流。
⑩ java中字节流和字符流的问题
1
字符流是已双字节的形式读取,字符流是可以转成字节流的,A是一样的,ascii是unicode的子集
2
既然是按字节读那么也就是说可以读任何数据,读出来的是2进制数据
3
如果是处理文字的话最好转成字符流,其他格式如视频,图片按2进制读