Java 字节流输入输出问题
importjava.io.*;classOtherCopy{publicstaticvoidmain(String[]args)throwsIOException{Fi...
import java.io.*;
class OtherCopy
{
public static void main(String[] args) throws IOException
{
FileInputStream fis=new FileInputStream("c:\\1.mp3");
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos=new FileOutputStream("c:\\2.mp3");
BufferedOutputStream bos=new BufferedOutputStream(fos);
int len=0;
while((len=bis.read())!=-1)
{
// System.out.println(len);
bos.write(len);
}
bis.close();
bos.close();
}
}
问:int 型len,怎么能接收bis.read()读取到字节流哪?? ,字节流属于什么类型啊?? 展开
class OtherCopy
{
public static void main(String[] args) throws IOException
{
FileInputStream fis=new FileInputStream("c:\\1.mp3");
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos=new FileOutputStream("c:\\2.mp3");
BufferedOutputStream bos=new BufferedOutputStream(fos);
int len=0;
while((len=bis.read())!=-1)
{
// System.out.println(len);
bos.write(len);
}
bis.close();
bos.close();
}
}
问:int 型len,怎么能接收bis.read()读取到字节流哪?? ,字节流属于什么类型啊?? 展开
展开全部
执行bis.read()方法的时候实际上是把读到的当前行的内容加入到了缓存中以供后边使用
,而把读到的这行内容的“长度”返回给len这个变量,返回的是读取到的长度,不是读取的内容,读取的内容已经在bis.read()这个方法中保存到缓存里了。
读取成功后调用bos.write(len)这个方法把已经保存到缓存中的数据给写入输出流中
,而把读到的这行内容的“长度”返回给len这个变量,返回的是读取到的长度,不是读取的内容,读取的内容已经在bis.read()这个方法中保存到缓存里了。
读取成功后调用bos.write(len)这个方法把已经保存到缓存中的数据给写入输出流中
追问
是不是len里面保存的是bis.read()度到的数据的长度,而不是字节流本身?那岂不是给bos.write(len)传进去的是流的长度不是流数据本身,那怎么把字节流数据传进write()去d的哪?
追答
len里面存的是长度,bis.read()执行这个方法的时候把当前行的内容保存在缓存中了,调用bos.write(len)的时候传入len是为了告诉bos.write()方法去缓存里面读取多少个字符长度,形象一点说:你要用杯子把一个水缸A里的水转移到另一个水缸B,当你调用bis.read()的时候就是从水缸A中取了一杯水,取完之后杯子把这次取到了len毫升水的这个水量告诉你,等你再把杯子里的水倒入水缸B的时候bos.write(l),你要告诉杯子,从被子里倒出多少水量,你告知杯子倒出len毫升水,杯子里的len毫升水就被倒入水缸B中,调用read()的时候是吧东西取出来放到容器中(缓存),调用write()的时候是去容器(缓存)中把内容取出来,容器(缓存)相当于一个寄存东西的地方一样,是程序里约定好的,read()和write()都知道容器(缓存)放在什么地方,你不用管。
不知道这么水你明白不,这都是我一个字一个字手敲的,挺辛苦的,要是对你有用就加点分吧
展开全部
没有这种用法。这个东西不需要接收,字节流就是把文件里的东西读出来,或者写东西到文件。字节流是以字节为单位的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为是字节流,字节流,字节是由二进制表示的。所以可以用Int来接受。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没弄明白,read()返回的是读到字节的长度,不是流,读不到就返回-1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
bis.read()这个没有参数的方法是从输入流一个字节一个字节的读,返回的是该字节的整数表示形式,如果读到了输入流的末尾,返回-1
返回的是整数表示,所以可以用int型的len接收
返回的是整数表示,所以可以用int型的len接收
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询