java中的Io(input與output)操作總結(二),iooutput

來源:互聯網
上載者:User

java中的Io(input與output)操作總結(二),iooutput
檔案的操作
這一節我們來討論關於檔案自身的操作
不浪費唾沫了,用代碼說話……
執行個體1:建立檔案對象
複製代碼 代碼如下:
import java.io.File;
public class Demo {
public static void main(String[] args) {
//建立要操作的檔案路徑和名稱
//其中,File.separator表示系統相關的分隔字元,Linux下為:/ Windows下為:\\
//path在此程式裡面代表父目錄,不包含子檔案
String path = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator;
//childPath在此程式裡面代表子目錄,包含子檔案
String childPath = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator + "demo.txt";
//用父目錄和子檔案分隔的方式構造File對象
//也可以寫成 new File("/home/siu/work","test.txt");
File f1 = new File(path,"test.txt");
//使用絕對路徑來構造File對象
//也可以寫成new File("/home/siu/work/demo.txt");
File f2 = new File(childPath);
//建立父目錄的檔案對象
File d = new File(path);
//使用已有父目錄對象和子檔案構建新的File對象
File f3 = new File(d,"hello.txt");
System.out.println("f1的路徑" + f1);
System.out.println("f2的路徑" + f2);
System.out.println("f3的路徑" + f3);
}
}

編譯後,顯示各個File對象所指向的絕對路徑

 
執行個體2:建立和刪除檔案
複製代碼 代碼如下:
import java.io.File;
import java.io.IOException;
public class Demo {
public static void main(String[] args) {
String Path = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator + "demo.txt";
File f = new File(Path);
try {
/*因為建立和刪除檔案涉及到底層操作,所以有可能會引發異常*/
//如果建立成功則會返回true
//如果已存在該檔案,則建立不成功,返回flase,別以為會覆蓋
System.out.println("建立檔案:" + f.createNewFile());
//刪除檔案,成功返回true,否則返回flase
System.out.println("刪除檔案:" + f.delete());
//此方法表示在虛擬機器退出時刪除檔案
//原因在於:程式運行時有可能發生異常造成直接退出
//清理殘餘很有必要~!
f.deleteOnExit();
} catch (IOException e) {
e.printStackTrace();
}
}
}

你看,建立成功,所以返回true,因為已經建立好了,所以刪除也能成功


執行個體3:檔案的判斷和測試
複製代碼 代碼如下:
import java.io.File;
public class Demo {
public static void main(String[] args) {
String Path = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator + "Demo.txt";
File f = new File(Path);
//判斷檔案是否可執行
System.out.println("f是否可執行:" + f.canExecute());
//判斷檔案是否存在
System.out.println("f是否存在:" + f.exists());
//判斷檔案是否可讀
System.out.println("f是否可讀:" + f.canRead());
//判斷檔案是否可寫
System.out.println("f是否可寫:" + f.canWrite());
//判斷檔案是否為絕對路徑名
System.out.println("f是否絕對路徑:" + f.isAbsolute());
//判斷檔案是否為一個標準檔案
System.out.println("f是否為標準檔案:" + f.isFile());
//判斷檔案是否為一個目錄
System.out.println("f是否為目錄:" + f.isDirectory());
//判斷檔案是否隱藏
System.out.println("f是否隱藏:" + f.isHidden());
}
}

這裡使用不同的檔案做測試便可,設定檔案屬性什麼的也很簡單
需要注意的是,如果使用isFlie()和isDirectory()進行測試,則先要確定檔案對象是否已經建立


執行個體4:建立目錄
複製代碼 代碼如下:
import java.io.File;
public class Demo {
public static void main(String[] args) {
String path = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator;
//path在此處作為父目錄存在
File f1 = new File(path,"/abc");
File f2 = new File(path,"/d/e/f/g");
//建立一個目錄
System.out.println(f1.mkdir());
//遞迴建立目錄
System.out.println(f2.mkdirs());
}
}

注意看路徑


執行個體5:擷取檔案資訊
複製代碼 代碼如下:
import java.io.File;
public class Demo {
public static void main(String[] args) {
String path = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator + "demo.txt";
File f = new File(path);
//返迴文件的絕對路徑
//此處傳回值為String
System.out.println("f的絕對路徑名:" + f.getAbsolutePath());
//返迴文件的絕對路徑
//此處傳回值為File
System.out.println("f的絕對路徑對象:" + f.getAbsoluteFile());
//返迴文件或目錄的名稱
System.out.println("f的名稱:" + f.getName());
//返迴文件的相對路徑
//建構函式中封裝的是什麼路徑,就返回什麼路徑
System.out.println("f的路徑:" + f.getPath());
//返回父目錄的路徑
//如果在建構函式中的路徑不是絕對路徑,那麼此處返回null
System.out.println("f的父目錄:" + f.getParent());
}
}

這些都是比較常用並且功能類似的方法,至於不常用的資訊擷取參考API即可


執行個體6:列出檔案系統的根目錄
複製代碼 代碼如下:
import java.io.File;
public class Demo {
public static void main(String[] args) {
//listRoots()是一個靜態方法,返迴文件數組
File[] files = File.listRoots();
//foreach迴圈列印File對象
for (File x : files) {
System.out.println(x);
}
}
}

因為本地環境是Linux,所以根目錄只有一個 /,如果是Windows就能列出你的所有盤符


執行個體7:列出目錄下的所有檔案
複製代碼 代碼如下:
import java.io.File;
public class Demo {
public static void main(String[] args) {
String path = File.separator + "opt" + File.separator;
File f = new File(path);
//方式一:list()
//返回一個包含指定目錄下所有檔案名稱的字串數組
//如果不是一個目錄則返回null
String[] files = f.list();
for (String x : files) {
System.out.println(x);
}
//方式二:listFiles()
//返回File數組
/*
File[] files = f.listFiles();
for (File x : files) {
//如果需要包含路徑,則直接列印x即可
System.out.println(x.getName());
}
*/
}
}

pic
兩者都是返回目錄下的所有檔案名稱,但是第二種方式更實用,為遞迴列出檔案做鋪墊


執行個體8:遞迴列出目錄下所有檔案
複製代碼 代碼如下:
import java.io.File;
public class Demo {
public static void main(String[] args) {
String path = File.separator + "opt" + File.separator;
File f = new File(path);
//調用下面的遞迴方法
print(f);
}
//用遞迴的方式列印目錄列表
public static void print(File f) {
if(f.isDirectory()){
File[] files = f.listFiles();
for(File x : files) {
print(x);
}
} else {
System.out.println(f);
}
}
}

好吧,列印內容太多了,意思意思就行了


關於檔案的基本操作就講到這,想到再繼續補充……
下續章節將講解java io的其他動作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.