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是怎么来的?新手求教,谢谢!
1024就是大小,int len=in.read(mybyte2);这句就是一次读取1024个字节的数据,如果你的文件不是一句话,而是更大的文件,那么就需要读取多次,需要遍历
这样的好处是读取速度比较快。
这个是开一个缓冲区,1024随便写的。
就你的程序来说,byte[] mybyte2=new byte[102];也可以运行,因为你的文件内容很短
但是byte[] mybyte2=new byte[10];肯定不行
1024个byte是1MB,用来存储内存读取的字节数的,因为计算机2的10次方,是1024,这样可能存储起来比较方便。
1024就是数组的大小,自己随便写,只要够用就行了。
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吉字节等于一太字节
意思是定义一个缓冲区,大小为1024个字节,即1KB
随便写的,如果读较大的文件,一般写4096,因为4K刚好是内存的一个页,听说效率会高一些
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();
}