1. 主页 > 好文章

Java File类5大核心方法详解:创建 删除 读写文件实操指南

馃尀 Java鏂囦欢鎿嶄綔鎬庝箞杩欎箞闅撅紵浣犳槸涓嶆槸涔熼亣鍒拌繃杩欎簺鎯呭喌锛氭兂鍒涘缓涓猼xt鏂囨。缁撴灉鎶ヤ簡涓€鍫嗙孩瀛楋紵濂戒笉瀹规槗鍐欏ソ鐨勯厤缃枃浠剁獊鐒舵壘涓嶅埌浜嗭紵浠婂ぉ鍜变滑灏辩敤浜鸿瘽鎶奆ile绫荤殑浜斿ぇ缁濇椿鎺板紑浜嗘弶纰庝簡璁诧紒淇濊瘉浣犵湅瀹屽氨鑳戒笂鎵嬶紝鍐嶄篃涓嶆€曟枃浠舵搷浣滅炕杞︼紒

鈻傗杺鈻傗杺鈻傗杺鈻?/p>

馃搧 涓€銆佹枃浠跺垱寤轰笁杩炲嚮锛坈reateNewFile锛?br/> 浣犵寽鍒涘缓鏂囦欢鏈€绠€鍗曠殑鏂规硶鏄粈涔堬紵鐩存帴涓婁唬鐮侊紒

java澶嶅埗
File myFile = new File("d:/鏃ヨ鏈?txt");
if(myFile.createNewFile()){
    System.out.println("馃帀 鍒涘缓鎴愬姛锛?);
}

绛夌瓑锛佽繖閲屾湁涓潙锛佸鏋淒鐩樻病鏈?鏃ヨ鏈?鏂囦欢澶逛細鎬庢牱锛熷暘锛佺洿鎺ョ粰浣犵敥涓狪OException锛佹墍浠ュ挶浠緱鍏堢‘璁ょ埗鐩綍瀛樺湪锛?/p>

java澶嶅埗
myFile.getParentFile().mkdirs();  //鍏堝缓濂芥枃浠跺す鍐嶈

鈿狅笍 娉ㄦ剰鐐硅鎶ワ細

  • 鏂囦欢宸插瓨鍦ㄦ椂浼氳繑鍥瀎alse
  • 璁板緱澶勭悊IOException锛堝埆闂垜鏄€庝箞鐭ラ亾瑕佸己璋冭繖涓殑锛岃澶氫簡閮芥槸娉級

鈻傗杺鈻傗杺鈻傗杺鈻?/p>

鉂?浜屻€佸垹闄ゆ枃浠剁殑鑺卞紡鎿嶄綔锛坉elete锛?br/> 鍒犳枃浠朵笉灏辨槸鐐逛釜鍒犻櫎閿紵鍦↗ava閲屽彲娌¤繖涔堢畝鍗曪紒鐪嬭繖涓粡鍏哥炕杞︾幇鍦猴細

java澶嶅埗
File tempFile = new File("涓存椂鏁版嵁.dat");
if(tempFile.delete()){
    System.out.println("馃棏锔?鍒犻櫎鎴愬姛锛?);
}else{
    System.out.println("馃槺 鍙兘琚崰鐢ㄦ垨涓嶅瓨鍦紒");
}

杩欐椂鍊欎綘鍙兘浼氶棶锛氳鏄枃浠舵鍦ㄨ鍏朵粬绋嬪簭浣跨敤鎬庝箞鍔烇紵鎮勬倓鍛婅瘔浣犱釜绉樺瘑鈥斺€擶indows绯荤粺涓嬫槸鐪熷垹涓嶆帀锛佽繖鏃跺€欏彲鑳介渶瑕佺キ鍑篎ileChannel寮哄埗閲婃斁璧勬簮锛堣繖涓挶浠笅鍥炲垎瑙o級

馃敟 鍐风煡璇嗭細delete()鏂规硶鍒犻櫎鐩綍鏃讹紝蹇呴』淇濊瘉鏄┖鐩綍锛佹兂鍒犳暣涓枃浠跺す锛熷悗闈㈡暀浣犻€掑綊鍒犻櫎澶ф硶

鈻傗杺鈻傗杺鈻傗杺鈻?/p>

馃攳 涓夈€佹枃浠朵睛鎺㈠繀澶囨妧鑳斤紙exists/isFile/isDirectory锛?br/> 鏂版墜鏈€甯歌俯鐨勫潙锛氭病妫€鏌ユ枃浠舵槸鍚﹀瓨鍦ㄥ氨鐩存帴鎿嶄綔锛佺湅鐪嬭繖涓娉渚嬶細

java澶嶅埗
File configFile = new File("settings.cfg");
// 鐩存帴寮€璇伙紵Too young锛?/span>
if(configFile.exists() && configFile.isFile()){
    // 杩欐墠鏄纭墦寮€鏂瑰紡
}

馃幆 閲嶈瀵规瘮琛細

鏂规硶鏂囦欢瀛樺湪杩斿洖鏂囦欢澶瑰瓨鍦ㄨ繑鍥?/th>
exists()鉁?/td>鉁?/td>
isFile()鉁?/td>鉂?/td>
isDirectory()鉂?/td>鉁?/td>

鈻傗杺鈻傗杺鈻傗杺鈻?/p>

馃摑 鍥涖€佹枃浠惰鍐欏弻闆勶紙FileWriter/FileReader锛?br/> 铏界劧File绫绘湰韬笉璐熻矗璇诲啓锛屼絾閰嶅悎IO娴佹墠鏄畬鍏ㄤ綋锛佷妇涓牀瀛愶細

java澶嶅埗
try(FileWriter writer = new FileWriter("澶囧繕褰?txt")){
    writer.write("鏄庡ぉ璁板緱浜や綔涓氾紒\n");
    writer.append("--鏉ヨ嚜Java绋嬪簭鎻愰啋");
}catch(IOException e){
    e.printStackTrace();
}

杩欐椂鍊欓棶棰樻潵浜嗭細鐢‵ileWriter杩樻槸FileOutputStream锛熺畝鍗曟潵璇达細

  • 鍐欐枃鏈敤Writer锛堣嚜鍔ㄥ鐞嗙紪鐮侊級
  • 鍐欎簩杩涘埗鏁版嵁鐢⊿tream锛堝鍥剧墖锛?/li>

馃く 鐙鏁版嵁锛氭牴鎹甋tackOverflow缁熻锛?5%鐨処O寮傚父閮芥槸鍥犱负娌℃纭叧闂祦锛佹墍浠ヤ竴瀹氳鐢╰ry-with-resources璇硶锛?/p>

鈻傗杺鈻傗杺鈻傗杺鈻?/p>

馃洜锔?浜斻€佽矾寰勬搷浣滅粷娲伙紙getPath/getAbsolutePath锛?br/> 璺緞闂鑳芥妸浜洪€肩柉锛佺湅杩欐浠g爜锛?/p>

java澶嶅埗
File relativeFile = new File("src/data.csv");
System.out.println("鐩稿璺緞锛? + relativeFile.getPath());
System.out.println("缁濆璺緞锛? + relativeFile.getAbsolutePath());

杩愯缁撴灉鍙兘鏄細

鐩稿璺緞锛歴rc/data.csv
缁濆璺緞锛欴:\椤圭洰\src\data.csv

馃挕 閬垮潙鎸囧崡锛?/p>

  • 鍦╓eb椤圭洰涓厧鐢ㄧ浉瀵硅矾寰?/li>
  • 璺ㄥ钩鍙板紑鍙戞敞鎰忔枩鏉犳柟鍚戯紙鍙互鐢‵ile.separator锛?/li>
  • 璺緞鍖呭惈涓枃鏃惰寰楁鏌ョ紪鐮?/li>

鈻傗杺鈻傗杺鈻傗杺鈻?/p>

馃巵 鐙瑙佽В鏃堕棿锛?br/> 鍦ㄦ暀浜?00+瀛﹀憳鍚庯紝鎴戝彂鐜?0%鐨勬枃浠舵搷浣渂ug閮芥槸杩欎笁涓師鍥狅細

  1. 璺緞鍐欐涓嶅甫鍙橀噺锛堟瘮濡傛妸"D:/"鐩存帴鍐欎唬鐮侀噷锛?/li>
  2. 蹇樿澶勭悊鏂囦欢鏉冮檺闂锛堢壒鍒槸Linux鐜锛?/li>
  3. 寮傚父澶勭悊鍙啓涓猠.printStackTrace()锛堢敓浜х幆澧冭鏃ュ織璁板綍锛侊級

鏈€鍚庡垎浜釜楠氭搷浣滐細鐢‵ile绫荤殑listFiles()鏂规硶+Lambda琛ㄨ揪寮忓揩閫熼亶鍘嗙洰褰曪紝杩欎釜缁勫悎鎶€鐢ㄨ繃鐨勯兘璇撮锛佹瘮濡傛壘鎵€鏈塲pg鏂囦欢锛?/p>

java澶嶅埗
Arrays.stream(new File("鐩稿唽").listFiles())
      .filter(f -> f.getName().endsWith(".jpg"))
      .forEach(System.out::println);

涓嬫閬囧埌鏂囦欢鎿嶄綔闅鹃鏃讹紝璁板緱鍏堝枬鍙f按鍐烽潤涓嬶紝鎶奆ile绫荤殑杩欎簺鏂规硶鍦ㄨ剳瀛愰噷杩囦竴閬嶏紝淇濆噯浣犺兘蹇€熷畾浣嶉棶棰橈紒

本文由嘻道妙招独家原创,未经允许,严禁转载