解決java使用file.createNewFile()創(chuàng)建文件時報(bào)錯目錄不存在的問題
使用file.createNewFile()創(chuàng)建文件時報(bào)錯目錄不存在
普通創(chuàng)建文件代碼
String strPath = "E:\\test\\test1\\test.txt"; File file = new File(strPath); if(!file.exists())){ file.createNewFile(); }
上述這段代碼,當(dāng)E:\test\test1
目錄不存在時,createNewFile()
執(zhí)行會報(bào)錯:
java.io.IOException:Parent directory of file does not exist
String strPath = "E:\\test\\test1\\test.txt"; File file = new File(strPath); if(!file.exists())){ file.mkdirs(); }
這段代碼會創(chuàng)建目錄
E:\test\test1\test.txt\
String strPath = "E:\\test\\test1\\test.txt"; File file = new File(strPath); File fileParent = file.getParentFile(); if(!fileParent.exists()){ fileParent.mkdirs(); } file.createNewFile();
上述這段代碼可以成功創(chuàng)建文件。
原因:
先判斷文件所處目錄是否存在,如果不存在則遞歸創(chuàng)建目錄;注意是mkdirs()
而不是mkdir()
。
mkdir
:只能用來創(chuàng)建文件夾,且只能創(chuàng)建一級目錄,如果上級不存在,就會創(chuàng)建失敗。mkdirs
:只能用來創(chuàng)建文件夾,且能創(chuàng)建多級目錄 ,如果上級不存在,就會自動創(chuàng)建。(創(chuàng)建文件夾多用此)createNewFile
:只能用來創(chuàng)建文件,且只能在已存在的目錄下創(chuàng)建文件,否則會創(chuàng)建失敗。FileOutputStream os=new FileOutputStream(file)
也可創(chuàng)建文件,看情況使用
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Flyway進(jìn)行Java數(shù)據(jù)庫版本控制的操作指南
今天我們將深入探討如何使用Flyway進(jìn)行Java數(shù)據(jù)庫版本控制,Flyway是一個流行的數(shù)據(jù)庫遷移工具,用于管理和自動化數(shù)據(jù)庫模式的演變,文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07java實(shí)現(xiàn)仿windows 字體設(shè)置選項(xiàng)卡實(shí)例
本篇文章介紹了java仿windows 字體設(shè)置選項(xiàng)卡,可實(shí)現(xiàn)類似windows字體設(shè)置效果,需要的朋友可以參考下。2016-10-10SpringBoot實(shí)現(xiàn)支付寶沙箱支付的完整步驟
沙箱支付是一種用于模擬真實(shí)支付環(huán)境的測試工具,它提供了一個安全的測試環(huán)境,供開發(fā)者在不影響真實(shí)交易的情況下進(jìn)行支付功能的開發(fā)和測試,這篇文章給大家介紹了SpringBoot實(shí)現(xiàn)支付寶沙箱支付的完整步驟,需要的朋友可以參考下2024-04-04詳解Spring 基于 Aspect 注解的增強(qiáng)實(shí)現(xiàn)
本篇文章主要介紹了詳解Spring 基于 Aspect 注解的增強(qiáng)實(shí)現(xiàn),非常具有實(shí)用價值,需要的朋友可以參考下2017-04-04Mybatis使用@one和@Many實(shí)現(xiàn)一對一及一對多關(guān)聯(lián)查詢
本文主要介紹了Mybatis使用@one和@Many實(shí)現(xiàn)一對一及一對多關(guān)聯(lián)查詢,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Java并發(fā)編程之Semaphore(信號量)詳解及實(shí)例
這篇文章主要介紹了Java并發(fā)編程之Semaphore(信號量)詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06