import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
/**
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,
并将原来文件的扩展名从.java改为.jad。
* @author JHL
*
*
*/
public class Demo2 {
public static void main(String[] args) {
FileInputStream fis=null;
FileOutputStream fos=null;
//1.读取\java下所有.java文件
File fjava=new File("D:\\test\\java");
if(!(fjava.exists()&&fjava.isDirectory())){//校验
System.out.println("file not exists or is Directory!");
}
//找到对应目录下所有的.java文件
File[] bl=fjava.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.endsWith(".java");
}
});
//2.改扩展名,复制到\jad下,并复制每个文件中的内容
File fjad=new File("D:\\test\\jad");
if(!(fjad.exists())) fjad.mkdir();//不存在创建jad
for(File result:bl) {
try {
fis=new FileInputStream(result);
//用给定的替换替换与给定的regular expression匹配的此字符串的每个子字符串。
String changeFileName=result.getName().replaceAll("\\.java$", ".jad");
//public File(File parent,String child)从父抽象路径名和子路径名字符串创建新的File实例。
//将changeFileName写入到fjad文件下,并为其实例一个文件输出流对象
fos=new FileOutputStream(new File(fjad,changeFileName));
copy(fis,fos);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fis!=null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fos!=null) {
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
/**
* public int read(byte[] b)
throws IOException从输入流读取一些字节数,并将它们存储到缓冲区b 。
实际读取的字节数作为整数返回。 该方法阻塞直到输入数据可用,检测到文件结束或抛出异常。
如果b的长度为零,则不会读取字节并返回0 ; 否则,尝试读取至少一个字节。
如果没有字节可用,因为流在文件末尾,则返回值-1 ; 否则,读取至少一个字节并存储到b 。
第一个字节读取存储在元素b[0] ,下一个字节存入b[1]等等。
读取的字节数最多等于b的长度。 令k为实际读取的字节数;
这些字节将存储在元素b[0]至b[ k -1] ,使元素b[ k ]至b[b.length-1]不受影响。
* @param fips
* @param fops
*/
public static void copy(FileInputStream fips,FileOutputStream fops){//复制每个文件中的内容
int len=0;
byte[] buf=new byte[1024];
try {
while((len=fips.read(buf))!=-1) {
fops.write(buf, 0, len);
//write(b, off, len)的一般合同是数组b中的一些字节按顺序写入输出流; 元素b[off]是写入的第一个字节, b[off+len-1]是此操作写入的最后一个字节。
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下, 并将原来文件的扩展名从.java改为.jad。
猜你喜欢
转载自blog.csdn.net/Bonport/article/details/103006268
今日推荐
周排行