relax_cat_another
relax_cat_another
2015-09-06 08:18
采纳率: 75%
浏览 1.9k
已采纳

关于java中的输入输出流的问题,新手求教,谢谢

import java.io.*;
public class Filetest3 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    File file=new File("word.txt");
    try{
        FileOutputStream out=new FileOutputStream(file);
        byte mybyte[]="我有一只小毛驴,我从来也不骑。".getBytes();
        out.write(mybyte);
        out.close();
    }catch(Exception e){
        e.printStackTrace();
    }
    try{
        FileInputStream in=new FileInputStream(file);
        byte[] mybyte2=new byte[1024];
        int len=in.read(mybyte2);
        System.out.println("文件中的信息是 "+new String(mybyte2,0,len));
    }catch(Exception e){
        e.printStackTrace();
    }
}

}
非常不明白byte[] mybyte2=new byte[1024];这句是干吗的,1024是怎么来的?新手求教,谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • u014763172
    猜个 2015-09-06 08:35
    已采纳

    1024就是大小,int len=in.read(mybyte2);这句就是一次读取1024个字节的数据,如果你的文件不是一句话,而是更大的文件,那么就需要读取多次,需要遍历
    这样的好处是读取速度比较快。

    点赞 评论
  • caozhy

    这个是开一个缓冲区,1024随便写的。

    点赞 评论
  • caozhy

    就你的程序来说,byte[] mybyte2=new byte[102];也可以运行,因为你的文件内容很短
    但是byte[] mybyte2=new byte[10];肯定不行

    点赞 评论
  • qq_25724825
    隔壁大老王 2015-09-06 08:26

    1024个byte是1MB,用来存储内存读取的字节数的,因为计算机2的10次方,是1024,这样可能存储起来比较方便。

    点赞 评论
  • a1193561652
    纵横车 2015-09-06 08:53

    1024就是数组的大小,自己随便写,只要够用就行了。

    点赞 评论
  • shakdy
    士心山 2015-09-06 09:48

    byte[] mybyte2=new byte[1024];定义一个1024字节大小的数组,作为缓冲区

    1kb=2^10b=1024b

    补充:
    8b=1B//8位等于一字节(即 00000000)
    1kB=1024B//1024字节等于1千字节
    1M=1024kB//1024千字节等于一兆字节
    1G=1024M//1024兆字节等于一吉字节
    1TB=1024G//1024吉字节等于一太字节

    点赞 评论
  • havedream_one
    havedream_one 2015-09-06 10:33

    意思是定义一个缓冲区,大小为1024个字节,即1KB

    点赞 评论
  • lovesgjs
    lovesgjs 2015-09-06 11:00

    随便写的,如果读较大的文件,一般写4096,因为4K刚好是内存的一个页,听说效率会高一些

    点赞 评论
  • sky_blue_flying
    sky_flying對滴 2015-09-09 07:38
    public static void main(String[] args) throws Exception {
        //使用字节输入流和字节输出流进行文件复制
        InputStream is=new FileInputStream("E:/开发工具/myeclipse-8.6.1-win32.exe");
    
        //创建字节输出流
        OutputStream os=new FileOutputStream("e:/a.exe");
        //每次读取1kb
        byte[] b=new byte[1024];
    
        int len=is.read(b);
    
        while(len!=-1){
            //将刚读取的1kb数据写出
            os.write(b, 0, len);
            //继续读取下一kb
            len=is.read(b);
        }
    
        //关流
        os.close();
        is.close();
    
    
    }
    
    点赞 评论

相关推荐