Java 檔案處理的幾種方法

來源:互聯網
上載者:User

最近總結了了一下,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,以上方法經過測試,功能基本可以,如有問題請留言。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.