標籤:檔案操作 file類 randomaccessfile類
一、File類
檔案的建立
package file;import java.io.File;import java.io.IOException;public class CreateFile {public static void main(String[] args) {// TODO 自動產生的方法存根 File file=new File("C:\\Users\\Public\\Desktop\\demo.txt"); try{ file.createNewFile(); }catch(IOException e){ e.printStackTrace(); }}}檔案的刪除
package file;import java.io.File;public class DeleteFile {public static void main(String[] args) {// TODO 自動產生的方法存根File file = new File("C:\\Users\\Public\\Desktop\\demo.txt");file.delete();}}檔案的尋找
package file;import java.io.File;public class ExistFile {public static void main(String[] args) {// TODO 自動產生的方法存根File file = new File("C:\\Users\\Public\\Desktop\\demo.txt");if(file.exists()){System.out.println("檔案存在!");}else{System.out.println("檔案不存在!");}}}路徑的判斷
package file;import java.io.File;public class JudgeFile {public static void main(String[] args) {// TODO 自動產生的方法存根File file1=new File("C:\\Users\\Public\\Desktop\\demo.txt");File file2=new File("C:\\Users\\Public\\Desktop");System.out.println(file1.isFile());System.out.println(file2.isDirectory());}}
目錄輸出
直接檔案輸出
package file;import java.io.File;public class FilePath {public static void main(String[] args) {// TODO 自動產生的方法存根File file=new File("C:\\Users\\Public\\Desktop");String path[]=file.list();int len=path.length;for(int i=0;i<len;i++){System.out.println(path[i]);}}}
路徑輸出
package file;import java.io.File;public class FilePath {public static void main(String[] args) {// TODO 自動產生的方法存根File file=new File("C:\\Users\\Public\\Desktop");File[] path=file.listFiles();//--------------------這裡發生了改變,以File對象為數組元素int len=path.length;for(int i=0;i<len;i++){System.out.println(path[i]);}}}建立檔案夾
package file;import java.io.File;
public class CreateDirect {public static void main(String[] args) {// TODO 自動產生的方法存根File file=new File("C:\\Users\\Public\\Desktop\\demo"); file.mkdir();//建立demo檔案夾}}}
在建立一個檔案的同時在檔案夾內建立檔案
package file;import java.io.File;import java.io.IOException;public class CreateDirect {public static void main(String[] args) {// TODO 自動產生的方法存根File file=new File("C:\\Users\\Public\\Desktop\\javatest\\demo.txt"); file.getParentFile().mkdir();//建立d\\javatest檔案夾try {file.createNewFile();} catch (IOException e) {// TODO 自動產生的 catch 塊e.printStackTrace();}}}
注意:因為linux與windows的檔案層次分隔字元分別為/和\,所以為了實現代碼的跨平台,本文中的\\皆可改為File.separator.
問題:列出某個目錄下的全部檔案(包括子目錄中的子檔案)
import java.io.File;public class ListDirectoryDemo {public static void main(String[] args) {File file = new File("d:" + File.separator);list(file);}public static void list(File file) {if (file.isDirectory()) {File lists[] = file.listFiles();if (lists != null) {for (int i = 0; i < lists.length; i++) {list(lists[i]);// 列出內容}}}System.out.println(file);}}
二、RandomAccessFile
構造方法:public RandomAccessFile(File file,String mode)throws FileNotFoundException
寫操作:
import java.io.File;import java.io.RandomAccessFile;public class RandomWrite {public static void main(String[] args) throws Exception {// 所有異常拋出File file = new File("C:\\Users\\Public\\Desktop\\demo.txt");// 指定要操作的檔案RandomAccessFile raf = new RandomAccessFile(file, "rw");// 以讀寫的形式進行操作// 寫入第一條資料String name = "zhangsan";// 表示姓名int age = 20; // 表示年齡raf.writeBytes(name); // 以位元組的方式將字串寫入raf.writeInt(age); // 寫入整型資料// 寫入第二條資料name = "lisi ";// 表示姓名age = 19; // 表示年齡raf.writeBytes(name); // 以位元組的方式將字串寫入raf.writeInt(age); // 寫入整型資料// 寫入第三條資料name = "wangwu ";// 表示姓名age = 21; // 表示年齡raf.writeBytes(name); // 以位元組的方式將字串寫入raf.writeInt(age); // 寫入整型資料raf.close();// 檔案操作的最後一定要關閉}}讀操作:
import java.io.File;import java.io.RandomAccessFile;public class RandomRead {public static void main(String[] args) throws Exception {// 所有異常拋出File file = new File("C:\\Users\\Public\\Desktop\\demo.txt");// 指定要操作的檔案RandomAccessFile raf = new RandomAccessFile(file, "r");// 以讀的形式進行操作byte b[] = null;// 定義位元組數組String name = null;int age = 0;b = new byte[8];raf.skipBytes(12); // 跨過第一個人的資訊System.out.println("第二個人的資訊:");for (int i = 0; i < 8; i++) {b[i] = raf.readByte(); // 讀取位元組}age = raf.readInt();// 讀取數字System.out.println("\t|- 姓名:" + new String(b));System.out.println("\t|- 年齡:" + age);raf.seek(0);// 回到開始位置System.out.println("第一個人的資訊:");for (int i = 0; i < 8; i++) {b[i] = raf.readByte(); // 讀取位元組}age = raf.readInt();// 讀取數字System.out.println("\t|- 姓名:" + new String(b));System.out.println("\t|- 年齡:" + age);raf.skipBytes(12); // 跨過第二個人的資訊System.out.println("第三個人的資訊:");for (int i = 0; i < 8; i++) {b[i] = raf.readByte(); // 讀取位元組}age = raf.readInt();// 讀取數字System.out.println("\t|- 姓名:" + new String(b));System.out.println("\t|- 年齡:" + age);raf.close();// 檔案操作的最後一定要關閉}}
java學習之檔案基本操作