日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用java实现 两个工具和一个copy功能

發布時間:2024/4/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用java实现 两个工具和一个copy功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 用java 實現三個工具類
    • 1. 輸入路徑,該工具會將該路徑下的所有文件列出來
    • 2. 輸入路徑,該工具會將該路徑下的文件、文件夾的數量統計出來
    • 3. 實現copy 功能(有點簡陋,,細節沒有處理)
    • 后記

用java 實現三個工具類

1. 輸入路徑,該工具會將該路徑下的所有文件列出來

這個是使用NIO的path和files 來進行的,非常的方便

class T1 {public void ergioc(String path) throws IOException {Files.walkFileTree(Paths.get(path), new SimpleFileVisitor<Path>() {//訪問目錄@Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {System.out.println("正在訪問 " + dir + "目錄");return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {return super.visitFileFailed(file, exc);}@Overridepublic FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {//當訪問到目錄之后,出發的方法return super.postVisitDirectory(dir, exc);}@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {System.out.println("正在訪問的文件 : " + file + "文件");return FileVisitResult.CONTINUE;}});} }

2. 輸入路徑,該工具會將該路徑下的文件、文件夾的數量統計出來

** 通過簡單的遍歷和遞歸實現的一個小功能,**

class T2 {int dirCount = 0;int fileCount = 0;public void Count1(String path) {File file = new File(path);File[] listFile = file.listFiles();for (int i = 0; i < listFile.length; i++) {if (listFile[i].isDirectory()) {dirCount++;Count1(listFile[i].toString());} else if (listFile[i].isFile()) {fileCount++;} else {Count1(listFile[i].toString());}}}public void sc() {System.out.println("文件數 :" + fileCount);System.out.println("目錄數 : " + dirCount);}}

3. 實現copy 功能(有點簡陋,,細節沒有處理)

** 這個沒用NIO2 ,如果有時間的話,我可以嘗試下**

class T3 {//寫一個總的方法來引用這個方法,,然后進行public void toatal(String path , String path1){File file1 = new File(path);File file2 = new File(path1);if (!file2.exists()){System.out.println("暫時沒有寫 合并,,該文件或文件夾已經存在");}else {CountCatalog(path,path1);copyFile(path,path1);}}/*** 如何通過java實現一個cpoy 功能 ; 如果是目錄則遞歸進行復制,如果是文件,則直接復制* 1. 首先 得到想要復制的文件或文件目錄,* 2. 如果是文件目錄得到目錄里面是否有 目錄或者是文件** 首先輸入的路徑是 第一個是被復制的文件或者文件夾 第二是 目的路徑地址**/public void copyFile(String path, String path1) {File file = new File(path);File file1 = new File(path1);File[] listFile = file.listFiles();//如果不行,就用三個方法來合成起來for (int i = 0; i < listFile.length; i++) {if (listFile[i].isDirectory()) {copyFile(listFile[i].toString(), file1.getPath().toString());} else if (listFile[i].isFile()) {String la = listFile[i].toString().substring(11,listFile[i].toString().length());String tmp = file1.toString() + la;File tmp1 = new File(tmp);try {if(tmp1.createNewFile()){FileInputStream fileInputStream = new FileInputStream(listFile[i].toString());FileOutputStream fileOutputStream = new FileOutputStream(tmp);int hasRead = 0;byte[] bbuf = new byte[1024];while ((hasRead = fileInputStream.read(bbuf)) > 0){fileOutputStream.write(bbuf);}System.out.println(tmp +" 創建成功");fileInputStream.close();fileOutputStream.close();}else {System.out.println("文件已經存在");}} catch (IOException e) {e.printStackTrace();}finally {}// 將父目錄代替String mulu1 = listFile[i].toString().replace(la, file1.toString());} else {copyFile(listFile[i].toString(), file1.getPath().toString());}}}/*** 我覺得應該使用遞歸 是更加的方便的,* 1. 首先, 你復制的文件或者目錄是不一樣的,如果是文件 那么 路徑就是代表的文件* 2. 如果是目錄, 但是你復制的目錄的父目錄 然后的子目錄,所以你先要創建父目錄* 3. 或者不是使用遞歸,而是使用樹圖或者說是回溯法,是不更加的方便 ???????????????** @param path*/public void CountCatalog(String path, String path1) {File file = new File(path);File file1 = new File(path1);File[] listFile = file.listFiles();// 首先是不該判斷是否是這個 目錄是否在這個地方是否存在,如果存在,現在現在先不寫合并// 如果沒有 首先你要創建父目錄// 然后通過遞歸得到下面的目錄和文件// 但是 目錄會自動根據文件的絕對路徑進行創建的,所以的,使用mkdirs 可以直接并且非常的方便/*** 現在的難點就是 : 前面獲取的路徑 可是并不能使用啊** 我可以 通過字符串的形式, 去確定修改絕對路徑不就行了嗎*/for (int i = 0; i < listFile.length; i++) {if (listFile[i].isDirectory()) {// 父目錄//父目錄不可變所以提到for語句上面String la = listFile[i].getParent();// 將父目錄代替String mulu1 = listFile[i].toString().replace(la, file1.toString());File tmp = new File(mulu1);// 創建目錄if (tmp.mkdirs()) {System.out.println(mulu1 + " 創建成功");} {System.out.println("文件夾已經存在");}//第二個參數,,只是在每個遞歸中保存這個路徑CountCatalog(listFile[i].toString(), mulu1);}else if (listFile[i].isFile()){} else {CountCatalog(listFile[i].toString(), file1.getPath().toString());}}} }

后記

如果你有更好的方法,可以與我分享,

轉載于:https://www.cnblogs.com/YJBlog/p/10440703.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的用java实现 两个工具和一个copy功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。