最近總結了了一下,Java對檔案的處理方法,主要包含,檔案的建立,刪除,重新命名,複製,移動幾種檔案的處理,
具體代碼如下:
package com.file;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Date;public class File_Test {//檔案是否成功刪除//private boolean flag;/** * 建立檔案及目錄 * @param path * @param filename */public void create_file(String path,String filename){String sparator=File.separator;File f=new File(path, filename);if(f.exists()){System.out.println("file exist! file detail");System.out.println("file path "+f.getAbsolutePath());System.out.println("file length "+f.length()+" "+f.lastModified());}else{f.getParentFile().mkdirs();try {f.createNewFile();} catch (IOException e) {e.printStackTrace();System.out.println("建立檔案失敗!");}}}/** * 擷取檔案屬性 * @param path * @param filename */public void getFile(String path,String filename){File f=new File(path, filename);if(f.exists()){System.out.println("file abspath "+f.getAbsolutePath()+'\n'+"file reable "+f.getParentFile()+'\n'+"file standar "+f.isFile()+'\n'+"file length "+f.length()+'\n'+"file modify time "+new Date(f.lastModified())+'\n'+"file can read "+f.canRead()+'\n'+"file can write "+f.canWrite()+'\n'+"file whether hidden "+f.isHidden());}else{System.out.println("file not exist!");}}/** * 檔案及檔案夾的複製 * @param src * @param des * @return */public boolean copy(String src,String des) {File in=new File(src);File out=new File(des);if(!in.exists()){System.out.println(in.getAbsolutePath()+"源檔案路徑錯誤!!!");return false;}else {System.out.println("源檔案路徑"+in.getAbsolutePath());System.out.println("目標路徑"+out.getAbsolutePath());}if(!out.exists()) out.mkdirs();File[] file=in.listFiles();FileInputStream fin=null;FileOutputStream fout=null;for(int i=0;i<file.length;i++){if(file[i].isFile()){try {fin=new FileInputStream(file[i]);} catch (FileNotFoundException e) {e.printStackTrace();}System.out.println("in.name="+file[i].getName());try {fout=new FileOutputStream(new File(des+File.separator+file[i].getName()));} catch (FileNotFoundException e) {e.printStackTrace();}System.out.println(des);int c;byte[] b=new byte[1024];try {while((c=fin.read(b))!=-1){fout.write(b, 0, c);System.out.println("複製檔案中!");}fin.close();fout.flush();fout.close();System.out.println("複製完畢!");} catch (IOException e) {e.printStackTrace();}}else copy(src+File.separator+file[i].getName(),des+File.separator+file[i].getName());}return false;}/** * 檔案夾的移動 * @param src * @param dest * @return */ private boolean moveFolder(String src, String dest) { File srcFolder = new File(src); File destFolder = new File(dest); if(!srcFolder.exists()){ return false; }else{ if(!destFolder.exists()) destFolder.mkdirs(); if(srcFolder.isFile()){ srcFolder.renameTo(new File( dest+srcFolder.getName())); } else if(srcFolder.isDirectory()){ File[] files=srcFolder.listFiles(); for(int i=0;i<files.length;i++){ if(files[i].isFile()) files[i].renameTo(new File(dest+File.separator+files[i].getName())); else moveFolder(src+File.separator+files[i].getName(), dest+File.separator+files[i].getName()); } } } return true; }/** * 單個檔案移動 */private void fileMove(){String src="E:/tt/",des="F:/kk/"; File f=new File(des); File fileList[]=f.listFiles(); for(int i=0;i<fileList.length ;i++) { fileList[i].renameTo(new File( src+ fileList[i].getName())); } }/** * 根據路徑刪除指定的目錄或檔案,無論存在與否 *@param sPath 要刪除的目錄或檔案 *@return 刪除成功返回 true,否則返回 false。 */ private boolean DeleteFolder(String sPath) { boolean flag = false; File file = new File(sPath); // 判斷目錄或檔案是否存在 if (!file.exists()) { // 不存在返回 false return flag; } else { // 判斷是否為檔案 if (file.isFile()) { // 為檔案時調用刪除檔案方法 return deleteFile(sPath); } else { // 為目錄時調用刪除目錄方法 return deleteDirectory(sPath); } } } /** * 刪除單個檔案 * @param sPath 被刪除檔案的檔案名稱 * @return 單個檔案刪除成功返回true,否則返回false */ private boolean deleteFile(String sPath) { boolean flag = false; File file = new File(sPath); // 路徑為檔案且不為空白則進行刪除 if (file.isFile() && file.exists()) { file.delete(); flag = true; } return flag; } /** * 刪除目錄(檔案夾)以及目錄下的檔案 * @param sPath 被刪除目錄的檔案路徑 * @return 目錄刪除成功返回true,否則返回false */ private boolean deleteDirectory(String sPath) { //如果sPath不以檔案分隔字元結尾,自動添加檔案分隔字元 if (!sPath.endsWith(File.separator)) { sPath = sPath + File.separator; } File dirFile = new File(sPath); //如果dir對應的檔案不存在,或者不是一個目錄,則退出 if (!dirFile.exists() || !dirFile.isDirectory()) { return false; } boolean flag = true; //刪除檔案夾下的所有檔案(包括子目錄) File[] files = dirFile.listFiles(); for (int i = 0; i < files.length; i++) { //刪除子檔案 if (files[i].isFile()) { flag = deleteFile(files[i].getAbsolutePath()); if (!flag) break; } //刪除子目錄 else { flag = deleteDirectory(files[i].getAbsolutePath()); if (!flag) break; } } if (!flag) return false; //刪除目前的目錄 if (dirFile.delete()) {System.out.println("刪除成功"); return true; } else {System.out.println("刪除失敗"); return false; } }/** * 以二叉樹形式展示檔案名稱字,(windows檔案管理形式) * @param file * @param level */private void treeName(File file,int level){String space= " ";for(int t=0;t<level;t++){space+=" ";}File[] files=file.listFiles();for(int i=0;i<files.length;i++){System.out.println(space+files[i].getName());if(files[i].isDirectory()){treeName(files[i],level+1);}}}public static void main(String[] args) {File_Test ft=new File_Test();/*ft.create_file(path, "b.txt");ft.list_file("F:/a");ft.getFile(path, "a.txt");ft.copy_file(path, "a.txt", path2, "c.txt");*///ft.copy("F:/11","F:/kk");//ft.DeleteFolder("F:/kk");ft.DeleteFolder("E:/tt");//ft.moveFolder("F:/tt/","F:/kk/");}}
將特定文本資訊寫入項目所在的根目錄下:
String str="write dir";String filename=System.getProperty("user.dir")+"/src/com/agency/model2/temp.txt";File f=new File(filename);FileWriter fw=new FileWriter(f);fw.write(str);fw.flush();fw.close();
以上就可以將資訊記錄在項目內檔案之中。
ok,以上方法經過測試,功能基本可以,如有問題請留言。