IO流複製檔案並對檔案進行更名---師承劉易老師
阿新 • • 發佈:2019-02-18
package copyfloder;
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;
public class CopyFileNewname
{
public static void main(String[] args)throws IOException
{
//封裝源目錄
File srcFloder = new File("e:\\Java1");
//封裝目標目錄
File destFloder = new File("e:\\java2");
//判斷目標目錄是否存在
if(!destFloder.exists()){
destFloder.mkdir();
}
//使用檔案過濾器過濾所需要的檔案,將資料夾內的檔案存入陣列使用
File[] fileArray = srcFloder.listFiles(new FilenameFilter()
{
//對檔案過濾器進行重寫
@Override
//dir指的是碟符名字
//name值得是檔名字
public boolean accept(File dir, String name)
{
//建立新的檔案採用路徑加檔名的構造方法判斷是否是檔案
//判斷檔案結尾的字元
return new File(dir,name).isFile() && name.endsWith(".java" );
}
});
//增強for對檔案陣列進行處理
for(File file : fileArray){
//在新的資料夾中建立所要複製過去的檔案
File newFile = new File(destFloder, file.getName());
//複製操作
copy(file, newFile);
}
//對目標資料夾複製檔案進行更名操作
File[] destFileArray = destFloder.listFiles();
for(File file : destFileArray){
String name = file.getName();
String newName = name.replace(".java", ".jar");
File newNameFile = new File(destFloder,newName);
file.renameTo(newNameFile);
}
}
private static void copy(File file, File newFile)throws IOException
{
// TODO Auto-generated method stub
//運用緩衝區方法複製檔案
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.close();
bis.close();
}
}
對檔案目錄裡重新命名的理解
File[] destFileArray = destFloder.listFiles();
for(File file : destFileArray){
String name = file.getName();
String newName = name.replace(".java", ".jar");
File newNameFile = new File(destFloder,newName);
file.renameTo(newNameFile);
}
對檔案重新命名使用的renameTo只能對本資料夾的檔案進行重新命名,並且重新命名時他接受的是一個檔案,所以在重新命名時應該新建立一個帶有路徑和新名的檔案,是用老的檔名呼叫含有新名檔案的renameTo方法。
replace方法public String replace(char oldChar, char newChar)是字串方法會將oldchar替換掉,同時返回新的字串。
注意:File構造時注意指定原始檔夾,不然就造在本資料夾的檔案。