1. 程式人生 > >6、使用IO流實現檔案複製並修改檔案字尾

6、使用IO流實現檔案複製並修改檔案字尾

程式設計題目:

6.編寫一個程式,將D:\java目錄下的所有.java檔案複製到D:\jad目錄下,並將原來檔案的副檔名從.java改為.jad。

示例程式碼:

package program.stream.exercise06;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import
java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; import java.io.Writer; /** * 6.編寫一個程式,將D:\\java目錄下的所有.java檔案複製到D:\\jad目錄下, * 並將原來檔案的副檔名從.java改為.jad。 */
public class FileCopy { public static void main(String[] args) { File oriFile = new File("D:\\java");//原檔案目錄 //file.exists():判斷檔案目錄是否存在 //file.isDirectory():判斷檔案目錄是否是一個目錄 if(!(oriFile.exists() && oriFile.isDirectory())){ System.out.println("檔案目錄不存在!"
); } File[] files = oriFile.listFiles( new FilenameFilter(){ //檔名稱過濾器 public boolean accept(File file, String name) { return name.endsWith(".java"); } } ); System.out.println(files.length);//原檔案個數 File objFile = new File("D:\\jad");//目標檔案目錄 //objFile.exists():判斷目標檔案目錄是否存在 //objFile.mkdir():建立目標檔案目錄 if(!objFile.exists()){ objFile.mkdir(); } //copyByte(files,objFile); copyChar(files,objFile); System.out.println("寫入完成!"); } //使用位元組流進行檔案複製(位元組緩衝流可以不使用,使用其目的主要是為了提高效能) private static void copyByte(File[] files,File objFile){ InputStream inputStream = null; OutputStream outputStream = null; BufferedInputStream bufferedInputStream = null; BufferedOutputStream bufferedOutputStream = null; for(File f : files){ //替換檔案字尾 String objFileName = f.getName().replaceAll("\\.java$", ".jad"); try { inputStream = new FileInputStream(f); outputStream = new FileOutputStream(new File(objFile,objFileName)); bufferedInputStream = new BufferedInputStream(inputStream); bufferedOutputStream = new BufferedOutputStream(outputStream); int c = 0; while((c = bufferedInputStream.read()) != -1){ bufferedOutputStream.write(c); } } catch (Exception e) { e.printStackTrace(); } finally { try { bufferedOutputStream.close(); bufferedInputStream.close(); outputStream.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } //使用字元流進行檔案複製(字元緩衝流可以不使用,使用其目的主要是為了提高效能) private static void copyChar(File[] files,File objFile){ Reader reader = null; Writer writer = null; BufferedReader bufferedReader = null; BufferedWriter bufferedWriter = null; for(File f : files){ //替換檔案字尾 String objFileName = f.getName().replaceAll("\\.java$", ".jad"); try { reader = new FileReader(f); writer = new FileWriter(new File(objFile,objFileName)); bufferedReader = new BufferedReader(reader); bufferedWriter = new BufferedWriter(writer); int c = 0; while ((c=bufferedReader.read()) != -1) { bufferedWriter.write(c); } } catch (Exception e) { e.printStackTrace(); } finally { try { bufferedWriter.close(); bufferedReader.close(); writer.close(); reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

結果顯示:

這裡寫圖片描述
這裡寫圖片描述