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),...
相關文章
- EXP匯出資料檔名稱重複問題的解決
- Java-IO:複製檔案Java
- 解決winform窗體重複建立問題ORM
- [java IO流]之檔案複製Java
- Java 讀檔案寫檔案 韓文 中文 亂碼問題解決方案Java
- java複製檔案時遇到的問題Java
- Java IO 流之拷貝(複製)檔案Java
- Java 檔案 IO 操作Java
- 去掉字串中重複部分 提取檔案字尾名字串
- Java io.File應用(建立路徑和檔案)Java
- 徹底解決Hive小檔案問題Hive
- Trace檔案過量生成問題解決
- 解決關於Mac不能複製複製檔案到隨身碟的問題Mac
- jboss建立新檔案的問題
- 資料庫檔案複製問題和解決辦法資料庫
- python建立檔名亂碼怎麼解決Python
- 【cmd】IF ELSE 複製(copy)檔案問題
- 解決表單重複提交的問題
- 徹底解決java WEB專案的檔案路徑問題(war包)JavaWeb
- 解決建立帶有NameSpace的XML檔案出現空白xmlns的問題namespaceXML
- Spring竟然可以建立“重複”名稱的bean?—一次專案中存在多個bean名稱重複問題的排查SpringBean
- Java 檔案 IO 操作之 DirectIOJava
- 檔案系統變成RAW問題解決
- Oracle Trace檔案過量生成問題解決Oracle
- 用java解壓zip檔案的中文問題Java
- 解決vs2010下不能建立專案及檔案的問題
- git .gitignore 檔案 解決二進位制檔案衝突問題Git
- [java IO流]之 隨機訪問檔案(RandomAccessFile類)Java隨機randomMac
- DataGuard ORA-01111檔案建立失敗問題解決
- 快速解決mongodb出現id重複問題MongoDB
- 重複登入問題最終解決方法
- 解決VC中增加類檔案的問題 (轉)
- 解決純js檔案國際化的問題JS
- 解決excel開啟.csv檔案亂碼問題Excel
- c#匯出檔案,檔名中文亂碼解決方法C#
- Zuul上傳檔案,中文檔名亂碼解決辦法Zuul
- [java IO流]之檔案拷貝Java
- 微信小程式常見問題->上傳檔案後如何在後臺(php)獲取檔名解決方法微信小程式PHP