Java IO 建立檔案解決檔名重複問題
之前在做上傳的時候,檔案命名都是按照時間毫秒數來命名的,如 2017120110344155.jpg 這種的
其實這種雖然能解決問題,但是我個人不是很喜歡。
我更希望是如果檔名不存在不修改檔名,如果存在在檔名後面加數字,1,2,3這種的。
像這樣
程式碼演示
下面通過一個拷貝檔案的例子完成這個想法
- package practice.IO;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- /**
- * @author 言曌
- * @date 2017/12/2 上午10:59
- */
- public class Demo {
- /**
- * 將 /Users/liuyanzhao/Desktop/spring.jpeg 檔案
- * 拷貝到
- * /Users/liuyanzhao/Desktop/io/中
- * 需要避免檔名重複覆蓋的情況
- */
- public static void main(String args[]) throws IOException {
- //原始檔
- File sourceFile = new File("/Users/liuyanzhao/Desktop/spring.jpeg");
- //檔案的完整名稱,如spring.jpeg
- String filename = sourceFile.getName();
- //檔名,如spring
- String name = filename.substring(0,filename.indexOf("."));
- //檔案字尾,如.jpeg
- String suffix = filename.substring(filename.lastIndexOf("."));
- //目標檔案
- File descFile = new File("/Users/liuyanzhao/Desktop/io"+File.separator+filename);
- int i = 1;
- //若檔案存在重新命名
- while(descFile.exists()) {
- String newFilename = name+"("+i+")"+suffix;
- String parentPath = descFile.getParent();
- descFile = new File(parentPath+ File.separator+newFilename);
- i++;
- }
- descFile.createNewFile(); //新建檔案
- FileInputStream fin = new FileInputStream(sourceFile);
- FileOutputStream fout = new FileOutputStream(descFile);
- byte[] data = new byte[512];
- int rs = -1;
- while((rs=fin.read(data))>0) {
- fout.write(data,0,rs);
- }
- fout.close();
- fin.close();
- }
- }
最終效果是如上圖如果檔案存在,重新命名加(1),如果還存在加(2),...
相關文章
- Java-IO:複製檔案Java
- [java IO流]之檔案複製Java
- 解決winform窗體重複建立問題ORM
- DataGuard ORA-01111檔案建立失敗問題解決
- Java IO 流之拷貝(複製)檔案Java
- Java 檔案 IO 操作Java
- Java io.File應用(建立路徑和檔案)Java
- 去掉字串中重複部分 提取檔案字尾名字串
- 徹底解決Hive小檔案問題Hive
- python建立檔名亂碼怎麼解決Python
- 解決關於Mac不能複製複製檔案到隨身碟的問題Mac
- 資料庫檔案複製問題和解決辦法資料庫
- 徹底解決java WEB專案的檔案路徑問題(war包)JavaWeb
- 檔案系統變成RAW問題解決
- Java 檔案 IO 操作之 DirectIOJava
- Spring竟然可以建立“重複”名稱的bean?—一次專案中存在多個bean名稱重複問題的排查SpringBean
- [java IO流]之 隨機訪問檔案(RandomAccessFile類)Java隨機randomMac
- 解決excel開啟.csv檔案亂碼問題Excel
- [java IO流]之檔案拷貝Java
- c#匯出檔案,檔名中文亂碼解決方法C#
- Java HDFS API 追加檔案寫入內容異常問題的解決JavaAPI
- 快速解決mongodb出現id重複問題MongoDB
- 解決PHP匯出CSV檔案中文亂碼問題PHP
- 解決properties、xml等配置檔案無法找到問題XML
- 檔案IO操作
- Umbrella for mac(重複檔案清理軟體)Mac
- 檔案批次查詢複製匯出,按檔名批次查詢檔案,按檔案內容批次查詢檔案
- 解決Linq.ToDictionary()時的鍵重複問題
- 解決alertmanager重複傳送訊息的問題
- 解決生產日誌重複列印的問題
- kodbox讀取alist檔案失敗,問題解決過程
- 解決java web中safari瀏覽器下載後檔案中文亂碼問題JavaWeb瀏覽器
- Windows 10將允許您建立只有副檔名的檔案Windows
- 批處理以當前時間為檔名建立檔案
- Linux C 檔案IOLinux
- Python IO檔案管理Python
- Linux檔案IO操作Linux
- java安全編碼指南之:檔案IO操作Java