posts - 13,comments - 19,trackbacks - 0
          這需要導入java.io類
          import java.io.*;

          public class FileOperate {
            public FileOperate() {
            }

            /**
             * 新建目錄
             * @param folderPath String 如 c:/fqf
             * @return boolean
             */
            public void newFolder(String folderPath) {
              try {
                String filePath = folderPath;
                filePath = filePath.toString();
                java.io.File myFilePath = new java.io.File(filePath);
                if (!myFilePath.exists()) {
                  myFilePath.mkdir();
                }
              }
              catch (Exception e) {
                System.out.println("新建目錄操作出錯");
                e.printStackTrace();
              }
            }

            /**
             * 新建文件
             * @param filePathAndName String 文件路徑及名稱 如c:/fqf.txt
             * @param fileContent String 文件內容
             * @return boolean
             */
            public void newFile(String filePathAndName, String fileContent) {

              try {
                String filePath = filePathAndName;
                filePath = filePath.toString();
                File myFilePath = new File(filePath);
                if (!myFilePath.exists()) {
                  myFilePath.createNewFile();
                }
                FileWriter resultFile = new FileWriter(myFilePath);
                PrintWriter myFile = new PrintWriter(resultFile);
                String strContent = fileContent;
                myFile.println(strContent);
                resultFile.close();

              }
              catch (Exception e) {
                System.out.println("新建目錄操作出錯");
                e.printStackTrace();

              }

            }

            /**
             * 刪除文件
             * @param filePathAndName String 文件路徑及名稱 如c:/fqf.txt
             * @param fileContent String
             * @return boolean
             */
            public void delFile(String filePathAndName) {
              try {
                String filePath = filePathAndName;
                filePath = filePath.toString();
                java.io.File myDelFile = new java.io.File(filePath);
                myDelFile.delete();

              }
              catch (Exception e) {
                System.out.println("刪除文件操作出錯");
                e.printStackTrace();

              }

            }

            /**
             * 刪除文件夾
             * @param filePathAndName String 文件夾路徑及名稱 如c:/fqf
             * @param fileContent String
             * @return boolean
             */
            public void delFolder(String folderPath) {
              try {
                delAllFile(folderPath); //刪除完里面所有內容
                String filePath = folderPath;
                filePath = filePath.toString();
                java.io.File myFilePath = new java.io.File(filePath);
                myFilePath.delete(); //刪除空文件夾

              }
              catch (Exception e) {
                System.out.println("刪除文件夾操作出錯");
                e.printStackTrace();

              }

            }

            /**
             * 刪除文件夾里面的所有文件
             * @param path String 文件夾路徑 如 c:/fqf
             */
            public void delAllFile(String path) {
              File file = new File(path);
              if (!file.exists()) {
                return;
              }
              if (!file.isDirectory()) {
                return;
              }
              String[] tempList = file.list();
              File temp = null;
              for (int i = 0; i < tempList.length; i++) {
                if (path.endsWith(File.separator)) {
                  temp = new File(path + tempList[i]);
                }
                else {
                  temp = new File(path + File.separator + tempList[i]);
                }
                if (temp.isFile()) {
                  temp.delete();
                }
                if (temp.isDirectory()) {
                  delAllFile(path+"/"+ tempList[i]);//先刪除文件夾里面的文件
                  delFolder(path+"/"+ tempList[i]);//再刪除空文件夾
                }
              }
            }

            /**
             * 復制單個文件
             * @param oldPath String 原文件路徑 如:c:/fqf.txt
             * @param newPath String 復制后路徑 如:f:/fqf.txt
             * @return boolean
             */
            public void copyFile(String oldPath, String newPath) {
              try {
                int bytesum = 0;
                int byteread = 0;
                File oldfile = new File(oldPath);
                if (oldfile.exists()) { //文件存在時
                  InputStream inStream = new FileInputStream(oldPath); //讀入原文件
                  FileOutputStream fs = new FileOutputStream(newPath);
                  byte[] buffer = new byte[1444];
                  int length;
                  while ( (byteread = inStream.read(buffer)) != -1) {
                    bytesum += byteread; //字節數 文件大小
                    System.out.println(bytesum);
                    fs.write(buffer, 0, byteread);
                  }
                  inStream.close();
                }
              }
              catch (Exception e) {
                System.out.println("復制單個文件操作出錯");
                e.printStackTrace();

              }

            }

            /**
             * 復制整個文件夾內容
             * @param oldPath String 原文件路徑 如:c:/fqf
             * @param newPath String 復制后路徑 如:f:/fqf/ff
             * @return boolean
             */
            public void copyFolder(String oldPath, String newPath) {

              try {
                (new File(newPath)).mkdirs(); //如果文件夾不存在 則建立新文件夾
                File a=new File(oldPath);
                String[] file=a.list();
                File temp=null;
                for (int i = 0; i < file.length; i++) {
                  if(oldPath.endsWith(File.separator)){
                    temp=new File(oldPath+file[i]);
                  }
                  else{
                    temp=new File(oldPath+File.separator+file[i]);
                  }

                  if(temp.isFile()){
                    FileInputStream input = new FileInputStream(temp);
                    FileOutputStream output = new FileOutputStream(newPath + "/" +
                        (temp.getName()).toString());
                    byte[] b = new byte[1024 * 5];
                    int len;
                    while ( (len = input.read(b)) != -1) {
                      output.write(b, 0, len);
                    }
                    output.flush();
                    output.close();
                    input.close();
                  }
                  if(temp.isDirectory()){//如果是子文件夾
                    copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
                  }
                }
              }
              catch (Exception e) {
                System.out.println("復制整個文件夾內容操作出錯");
                e.printStackTrace();

              }

            }

            /**
             * 移動文件到指定目錄
             * @param oldPath String 如:c:/fqf.txt
             * @param newPath String 如:d:/fqf.txt
             */
            public void moveFile(String oldPath, String newPath) {
              copyFile(oldPath, newPath);
              delFile(oldPath);

            }

            /**
             * 移動文件到指定目錄
             * @param oldPath String 如:c:/fqf.txt
             * @param newPath String 如:d:/fqf.txt
             */
            public void moveFolder(String oldPath, String newPath) {
              copyFolder(oldPath, newPath);
              delFolder(oldPath);

            }
          }



          java中刪除目錄事先要刪除目錄下的文件或子目錄。用遞歸就可以實現。這是我第一個用到算法作的程序,哎看來沒白學。
          public void del(String filepath) throws IOException{
          File f = new File(filepath);//定義文件路徑       
          if(f.exists() && f.isDirectory()){//判斷是文件還是目錄
              if(f.listFiles().length==0){//若目錄下沒有文件則直接刪除
                  f.delete();
              }else{//若有則把文件放進數組,并判斷是否有下級目錄
                  File delFile[]=f.listFiles();
                  int i =f.listFiles().length;
                  for(int j=0;j<i;j++){
                      if (delFile[j].isDirectory()){                                                del (delFile[j].getAbsolutePath());//遞歸調用del方法并取得子目錄路徑
                      }
                      delFile[j].delete();//刪除文件
                  }
              }
              del(filepath);//遞歸調用
          }

          }    


          刪除一個非空目錄并不是簡單地創建一個文件對象,然后再調用delete()就可以完成的。要在平臺無關的方式下安全地刪除一個非空目錄,你還需要一個算法。該算法首先刪除文件,然后再從目錄樹的底部由下至上地刪除其中所有的目錄。

          只要簡單地在目錄中循環查找文件,再調用delete就可以清除目錄中的所有文件:

          static public void emptyDirectory(File directory) {
             File[ ] entries = directory.listFiles( );
             for(int i=0; i<entries.length; i++) {
                 entries[i].delete( );
             }
          }
          這個簡單的方法也可以用來刪除整個目錄結構。當在循環中遇到一個目錄時它就遞歸調用deleteDirectory,而且它也會檢查傳入的參數是否是一個真正的目錄。最后,它將刪除作為參數傳入的整個目錄。
          static public void deleteDirectory(File dir) throws IOException {
             if( (dir == null) || !dir.isDirectory) {
                 throw new IllegalArgumentException(

                           "Argument "+dir+" is not a directory. "
                       );
             }

             File[ ] entries = dir.listFiles( );
             int sz = entries.length;

             for(int i=0; i<sz; i++) {
                 if(entries[i].isDirectory( )) {
                     deleteDirectory(entries[i]);
                 } else {
                     entries[i].delete( );
                 }
             }

            dir.delete();
          }
          在Java 1.1以及一些J2ME/PersonalJava的變種中沒有File.listFiles方法。所以只能用File.list,它的返回值一個字符串數組,你要為每個字符串構造一個新的文件對象。
          posted on 2008-06-25 08:25 南山隱士 閱讀(1246) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 湘西| 甘洛县| 山西省| 全椒县| 金寨县| 阿拉尔市| 临武县| 西和县| 原阳县| 锦州市| 南康市| 新安县| 略阳县| 隆尧县| 扎兰屯市| 和顺县| 白沙| 靖远县| 墨脱县| 扎囊县| 宾阳县| 响水县| 迁安市| 锦屏县| 龙南县| 酉阳| 中宁县| 洛阳市| 乌恰县| 万载县| 富平县| 满城县| 湖南省| 平谷区| 建湖县| 东平县| 长顺县| 璧山县| 镇原县| 广汉市| 桃源县|