day03
输入输出流:读入写出
节点流:
有明确的来源和去向
往往对字节操作
节点流又叫低级流、字节流
处理流:
没有明确的来源和去向
往往对低级流或其他高级流进行操作,不能独立存在
处理流又叫高级流
*FileOutputStream fos=new FileOutputStream("a.txt",true); //创建对象,在当前目录下创建一个名为“a”的txt文件
//FileOutputStream默认会覆盖原有的内容 若不想被覆盖,声明对象时添加一个参数true
* String message="断剑重铸之日,其势归来之时。";
* fos.write(message.getBytes());
*fos.close() //记得关闭流,否则可能会造成严重后果
例:用字节流来复制某个文件
*FileInputStream fis1=new FileInputStream("文件名.文件类型"); //读入
* long ms1=System.currentTimeMillis();
* byte []buf1=new byte[文件大小(单位b)];
* fis1.read(buf1);
* FileOutputStream fis2=new FileOutputStream("复制的文件文件名.文件类型"); //写出
* fis2.write(buf1);
* long ms2=System.currentTimeMillis();
* System.out.println(ms2-ms1); //用时(毫秒)
* fis2.close();
BufferedInputStream/BufferedOutputStream:
缓冲高级流。内部维护了一个缓冲区,当我们需要写出数据时,会将数据存放在缓冲区,当缓冲区满时,一次性将数据写出。高级流需要用要用低级流作为辅助。
*FileOutputStream fos=new FileOutputStream("b.txt"); //低级流(字节流)
*BufferedOutputStream bos=new BufferedOutputStream(fos); //高级流 (两者都为写出流)
* String message="德玛西亚之力";
* byte[]buf=message.getBytes(); //将字符串转换为字节,用数组接收
* bos.write(buf); //写出
* bos.close(); //关闭高级流即可
用高级流复制文件:
BufferedInputStream bos = new BufferedInputStream(fos);
byte[] b = new byte[10240]; //可以不调用数组进行复制
FileOutputStream fis = new FileOutputStream("复制出的文件文件名.文件类型");
BufferedOutputStream bis = new BufferedOutputStream(fis);
long a1 = System.currentTimeMillis();
int i = -1;
while ((i = bos.read(b)) != -1) { //(i = bos.read()) != -1 此注释与数组相关
bis.write(b);
//bis.write(i);
}
bis.close();
bos.close();
long a2 = System.currentTimeMillis();
System.out.println(bs - a); //计算用时(单位毫秒)