java本地檔案操作
一、File類簡介
在java中所有的事務都是對象,檔案也不例外,java中使用File類表示檔案(包括檔案和檔案夾).
二、檔案的建立、刪除、重新命名2.1檔案建立
首先建立一個File對象f1, 傳入的string參數為檔案名稱,然後使用createNewFile()方法即可建立該檔案,檔案建立成功createNewFile()方法會返回true,建立失敗會返回false.如果檔案已經存在會建立失敗,可用exists() 方法檢測檔案是否存在。
package ucas.file.test;import java.io.File;import java.io.IOException;public class FileDemo01 { public static void main(String[] args) { File f1 = new File("Test.txt"); try { if(f1.exists()){ System.out.println("檔案已存在無須建立!"); }else{ if (f1.createNewFile()) { System.out.println("檔案建立成功!"); }else{ System.out.println("檔案建立失敗!"); } } } catch (IOException e) { e.printStackTrace(); } }}
2.2檔案刪除
檔案刪除使用delete()方法。
package ucas.file.test;import java.io.File;public class FileDeete { public static void main(String[] args) { File f1 = new File("Test.txt"); if (f1.exists() == false) { System.out.println("檔案不存在,刪除失敗!"); } else { if (f1.delete()) { System.out.println("刪除成功!"); }else{ System.out.println("刪除失敗"); } } }}
2.3檔案重新命名
在src目錄下存在一個Test.txt文字檔,修改檔案名稱:
package ucas.file.test;import java.io.File;public class FileRename { public static void main(String[] args) { File f1=new File("src/Test.txt"); File f2=new File("src/TestTwo.txt"); f1.renameTo(f2); }}
三、檔案夾的建立、刪除、重新命名3.1建立檔案夾
建立檔案夾使用mkdir()方法:
package ucas.file.test;import java.io.File;public class FileFolder { public static void main(String[] args) { File dir1=new File("src/Folder"); dir1.mkdir(); }}
這樣就走src目錄下建立了一個Folder檔案夾,重新整理後可見.
建立檔案夾時先判斷是否存在,這樣更加規範:
package ucas.file.test;import java.io.File;public class FileFolder { public static void main(String[] args) { File dir1=new File("src/Folder"); if(dir1.exists()){ System.out.println("檔案夾已存在!"); }else{ if(dir1.mkdir()){ System.out.println("檔案夾建立成功"); }else{ System.out.println("檔案夾建立失敗"); } } }}
3.2建立多級檔案夾
建立含義子檔案夾的檔案夾使用mkdirs()函數:
File dir1=new File("Folder/one/two");dir1.mkdirs()
3.3檔案夾的刪除
刪除檔案夾使用delete()函數,但是對於非空檔案夾不能一次性刪除
刪除非空檔案夾,可以採用遞迴的思想:
public static void deleteFolder(File dir) { File dirFile[] = dir.listFiles(); for (int i = 0; i < dirFile.length; i++) { if (dirFile[i].isDirectory()) { deleteFolder(dirFile[i]); } dirFile[i].delete(); } }
四、檔案屬性的讀取
package ucas.file.demo;import java.io.File;public class FileDemo3 { public static void main(String[] args) { // 檔案屬性的讀取 File file = new File("text.txt"); // 判斷檔案是否存在 System.out.println("判斷檔案是否存在:" + file.exists()); // 讀取檔案名稱 System.out.println("讀取檔案名稱:" + file.getName()); // 讀取檔案路徑 System.out.println("讀取檔案路徑:" + file.getPath()); // 讀取檔案絕對路徑 System.out.println("讀取檔案絕對路徑:" + file.getAbsolutePath()); // 讀取檔案父級路徑 System.out.println("父級檔案路徑:" + new File(file.getAbsolutePath()).getParent()); // 讀取檔案大小 System.out.println("檔案大小:" + (float) file.length() / 1000 + "Kb"); // 檔案是否被隱藏 System.out.println("檔案是否被隱藏:" + file.isHidden()); // 檔案是否可讀 System.out.println("檔案是否可讀:" + file.canRead()); // 檔案是否可寫 System.out.println("檔案是否可寫:" + file.canWrite()); //判斷是否為檔案夾 System.out.println("判斷是否為檔案夾:"+file.isDirectory()); }}
五、檔案屬性的設定
檔案可讀、可寫、唯讀方式設定:
//將檔案屬性設定為可寫: file.setWritable(true); //將檔案屬性設定為可讀: file.setReadable(true); //設定檔案唯讀: file.setReadOnly();
六、遍曆檔案夾
package ucas.file.demo;import java.io.File;public class FileDemo5 { public static void main(String[] args) { // 遍曆檔案夾 //File dir=new File("/Users/yaopan/Documents"); File dir=new File("../"); printFiles(dir,1); } public static void printFiles(File dir,int tab){ if(dir.isDirectory()){ File next[]=dir.listFiles(); for (int i = 0; i < next.length; i++) { for(int j=0;j
輸出結果:
|--.classpath|--.DS_Store|--.project|--.settings|--|--org.eclipse.jdt.core.prefs|--bin|--|--.DS_Store|--|--Folder|--|--|--one|--|--|--|--two|--|--TestTwo.txt|--|--ucas|--|--|--collection|--|--|--|--demo|--|--|--|--|--HashSetDemo.class|--|--|--|--|--IteratorDemo.class|--|--|--|--|--ListDemo.class|--|--|--|--|--MapDemo01.class|--|--|--|--|--SetDemo.class|--|--|--|--|--VectorDemo.class|--|--|--file|--|--|--|--demo|--|--|--|--|--FileDemo1.class|--|--|--|--|--FileDemo2.class|--|--|--|--|--FileDemo3.class|--|--|--|--|--FileDemo4.class|--|--|--|--|--FileDemo5.class|--|--|--|--|--FileDemo6.class|--|--|--|--test|--|--|--|--|--FileDeete.class|--|--|--|--|--FileDemo01.class|--|--|--|--|--FileFolder.class|--|--|--|--|--FileRename.class|--|--|--xml|--|--|--|--demo|--|--|--|--|--XmlDemo1.class|--My Folder|--|--two|--|--|--three|--src|--|--.DS_Store|--|--Folder|--|--|--1.txt|--|--|--1副本 2.txt|--|--|--1副本 3.txt|--|--|--1副本 4.txt|--|--|--1副本 5.txt|--|--|--1副本 6.txt|--|--|--1副本 7.txt|--|--|--1副本 8.txt|--|--|--1副本 9.txt|--|--|--1副本.txt|--|--|--one|--|--TestTwo.txt|--|--ucas|--|--|--collection|--|--|--|--demo|--|--|--|--|--HashSetDemo.java|--|--|--|--|--IteratorDemo.java|--|--|--|--|--ListDemo.java|--|--|--|--|--MapDemo01.java|--|--|--|--|--SetDemo.java|--|--|--|--|--VectorDemo.java|--|--|--file|--|--|--|--demo|--|--|--|--|--FileDemo1.java|--|--|--|--|--FileDemo2.java|--|--|--|--|--FileDemo3.java|--|--|--|--|--FileDemo4.java|--|--|--|--|--FileDemo5.java|--|--|--|--|--FileDemo6.java|--|--|--|--test|--|--|--|--|--FileDeete.java|--|--|--|--|--FileDemo01.java|--|--|--|--|--FileFolder.java|--|--|--|--|--FileRename.java|--|--|--xml|--|--|--|--demo|--|--|--|--|--XmlDemo1.java|--tangshi.txt|--tangshi2.txt|--Test.txt|--text.txt
七、檔案的簡單讀寫
工程目錄下放一個tangshi.txt,裡面輸入文字,讀取輸出與寫入:
package ucas.file.demo;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;public class FileDemo6 { public static void main(String[] args) { // 檔案的簡單讀和寫 File file = new File("tangshi.txt"); try { FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); BufferedReader bfr = new BufferedReader(isr); String line; while ((line = bfr.readLine()) != null) { System.out.println(line); } bfr.close(); isr.close(); fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } File file2 = new File("tangshi2.txt"); try { FileOutputStream fos = new FileOutputStream(file2); OutputStreamWriter osq = new OutputStreamWriter(fos); BufferedWriter bfw = new BufferedWriter(osq); bfw.write("登鸛雀樓\n"); bfw.write("唐 王之渙\n"); bfw.write("白日依山盡,黃河入海流。\n"); bfw.write("白日依山盡,黃河入海流。\n"); bfw.close(); osq.close(); fos.close(); System.out.println("寫入完成!"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}