/*
题目:
编写一个程序, 将指定目录下所有.java文件拷贝到另一个目录中,
并将扩展名改为.txt
思路:
1、用File对象封装目录
2、通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
3、遍历这个File数组,得到每一个File对象
4、判断该File对象是否是文件
a、如果是文件
b、继续判断是否以.java结尾
是:先改名后复制文件
否:不复制
*/
//导包
import java.io.IOException;
import java.io.File;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
class Test
{
public static void main(String[] args) throws IOException
{
//用File对象封装目录
File srcfile = new File("D:\\demos\\");
//用File对象封装目录
File destFile = new File("D:\\copyTo\\");
//调用复制的方法
copyFile(srcfile,destFile);
}
//复制方法
public static void copyFile(File srcFile, File destFile) throws IOException
{
//通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
File[] fileArray = srcFile.listFiles();
//遍历这个File数组,得到每一个File对象
for(File file : fileArray)
{
//判断该File对象是否是文件
if(file.isFile())
{
//如果不是以java为后缀的不复制,执行下次循环
if(!file.getName().endsWith(".java"))
{
continue;
}
//新文件File对象//复制前改名
File newFile = new File(destFile,file.getName().replace(".java",".txt"));
//用高效的字节输入流封装数据源
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
//用高效的字节输出流封装目的地
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
byte[] bys= new byte[1024];
int len = 0;
//判断是否读到文件结尾
while( (len = bis.read(bys)) != -1 )
{
//将数据写到文件中
bos.write(bys,0,len);
//刷新缓存流
bos.flush();
}
//关闭流对象
bis.close();
bos.close();
}
}
}
} |
|