一个文件下编写两个java程序_编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad...

package copy;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FilenameFilter;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;public classCopyTest {public static voidmain(String[] args) throws Exception {

File file=new File("D:\\java");//判断目录是否存在

if(!(file.exists()&&file.isDirectory())){throw new Exception("目录不存在");

}//找到文件夹下面的 .java 文件

File[] files=file.listFiles(newFilenameFilter() {publicboolean accept(File dir, String name) {//TODO Auto-generated method stub

return name.endsWith(".java");

}

});

System.out.println(files.length);//复制文件//找到目标目录

File targetfile=new File("D:\\jad");//判断目录是否存在,不存在创建

if(!(targetfile.exists()&&targetfile.isDirectory())){

targetfile.mkdirs();

}//替换文件名字

for(File f:files){//1.使用文件流实现文件复制

String targetFilename=f.getName().replace(".java", ".jad");//FileInputStream in=new FileInputStream(f);//FileOutputStream out=new FileOutputStream(new File(targetfile,targetFilename));//copy(in,out);//2.使用缓冲流加快读写效率

BufferedInputStream bis=new BufferedInputStream(newFileInputStream(f));

BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(newFile(targetfile,targetFilename)));

CopyDemo2(bis,bos);

}

}/**

* 使用文件流实现文件复制

* @author smy

* @throws Exception*/

public static void copy(InputStream in,OutputStream out) throws Exception{byte[] data = new byte[1024*10];int len = -1;while((len = in.read(data))!=-1){out.write(data,0,len);

}in.close();out.close();

}/**

* 使用缓冲流加快读写效率

*

* 缓冲流是一对高级流,使用它们可以提高读

* 写效率。

*

* 高级流:高级流用来处理其他流,高级流不能

* 独立存在,因为没有意义,使用高级流的目的

* 是为了解决某些读写操作的复杂度。简化我们

* 的读写操作。

*

* 低级流:数据源明确,真实负责读写数据的流。

*

* 读写操作一定需要低级流,但不一定非要使用

* 高级流。

* @author SMY

* @throws Exception*/

public static voidCopyDemo2(InputStream bis,OutputStream bos) throws Exception{int d = -1;/** 缓冲流内部维护了一个字节数组作为

* 缓冲。当我们调用read()方法读取一个

* 字节时,缓冲流会一次性读取若干字节

* 并存入缓冲区,然后返回第一个字节,当

* 我们再次调用read方法读取一个字节时,

* 它会立即将缓冲区中第二个字节返回,

* 直到所有字节都返回后,才会再次发生

* 实际的读取操作,读取一组字节放入缓冲

* 区。

* 所以本质上还是通过一次读取若干字节,

* 减少读取次数提高的读取效率。*/

while((d=bis.read())!=-1){

bos.write(d);

}

bis.close();

bos.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值