解決java使用file.createNewFile()創(chuàng)建文件時(shí)報(bào)錯(cuò)目錄不存在的問(wèn)題
使用file.createNewFile()創(chuàng)建文件時(shí)報(bào)錯(cuò)目錄不存在
普通創(chuàng)建文件代碼
String strPath = "E:\\test\\test1\\test.txt"; File file = new File(strPath); if(!file.exists())){ file.createNewFile(); }
上述這段代碼,當(dāng)E:\test\test1
目錄不存在時(shí),createNewFile()
執(zhí)行會(huì)報(bào)錯(cuò):
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(); }
這段代碼會(huì)創(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
:只能用來(lái)創(chuàng)建文件夾,且只能創(chuàng)建一級(jí)目錄,如果上級(jí)不存在,就會(huì)創(chuàng)建失敗。mkdirs
:只能用來(lái)創(chuàng)建文件夾,且能創(chuàng)建多級(jí)目錄 ,如果上級(jí)不存在,就會(huì)自動(dòng)創(chuàng)建。(創(chuàng)建文件夾多用此)createNewFile
:只能用來(lái)創(chuàng)建文件,且只能在已存在的目錄下創(chuàng)建文件,否則會(huì)創(chuàng)建失敗。FileOutputStream os=new FileOutputStream(file)
也可創(chuàng)建文件,看情況使用
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Flyway進(jìn)行Java數(shù)據(jù)庫(kù)版本控制的操作指南
今天我們將深入探討如何使用Flyway進(jìn)行Java數(shù)據(jù)庫(kù)版本控制,Flyway是一個(gè)流行的數(shù)據(jù)庫(kù)遷移工具,用于管理和自動(dòng)化數(shù)據(jù)庫(kù)模式的演變,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(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)境的測(cè)試工具,它提供了一個(gè)安全的測(cè)試環(huán)境,供開(kāi)發(fā)者在不影響真實(shí)交易的情況下進(jìn)行支付功能的開(kāi)發(fā)和測(cè)試,這篇文章給大家介紹了SpringBoot實(shí)現(xiàn)支付寶沙箱支付的完整步驟,需要的朋友可以參考下2024-04-04詳解Spring 基于 Aspect 注解的增強(qiáng)實(shí)現(xiàn)
本篇文章主要介紹了詳解Spring 基于 Aspect 注解的增強(qiáng)實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04Java和JVM的重載識(shí)別,重寫(xiě)方法是怎樣進(jìn)行的
這篇文章主要介紹了Java和JVM的重載識(shí)別,重寫(xiě)方法是怎樣進(jìn)行的,違章圍繞了Java和JVM的重載識(shí)別,重寫(xiě)方法展開(kāi)相關(guān)資料,需要的小伙伴可以參考一下,希望對(duì)你的工作或?qū)W習(xí)有所幫助2022-01-01Mybatis使用@one和@Many實(shí)現(xiàn)一對(duì)一及一對(duì)多關(guān)聯(lián)查詢
本文主要介紹了Mybatis使用@one和@Many實(shí)現(xiàn)一對(duì)一及一對(duì)多關(guān)聯(lián)查詢,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Java并發(fā)編程之Semaphore(信號(hào)量)詳解及實(shí)例
這篇文章主要介紹了Java并發(fā)編程之Semaphore(信號(hào)量)詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06