Java中經常會遇到讀取、操作文件的地方,這裏就會用到File類了,File類是Java中處理文件最重要的一個類,後面的數據流操作都是基於這個類的,File類直接繼承自Object類,具有很多構造方法,這是在API文檔中的描述:
而其中最常用的方法是File(String pathname),直接以字符串的形式尋找到文件的路徑,但是這裏會有一個問題,就是如果這個文件不存在呢?那麼就會產生異常,下面我們就利用程序在E盤目錄下建立一個文件夾test,並在test文件夾下面建立一個文件test.txt。
import java.io.File;
import java.io.IOException;
public class TestFile {
public static void main(String[] args) {
File file1 = new File("e:\\test\\test.txt");
/*
* 調用File類的exists()方法判斷file1是否存在 如果不存在則創建這個文件
* 如果存在,則需要判斷這個test.txt是標準文件還是一個文件夾
* 因爲文件夾也是可以這麼命名的,這裏調用File類的isFile()和isDirectory()方法
*/
if (!file1.exists()) {
System.out.println("該文件本來不存在,現已創建,請去相應的文件位置查看");
try {
//首先需要創建文件的父目錄
file1.getParentFile().mkdir();
//然後創建該文件
file1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
} else {
if (file1.isDirectory()) {
System.out.println("該文件是文件夾。");
} else if (file1.isFile()) {
System.out.println("該文件是文件。");
}
}
}
}
第一次的運行結果是這樣的:
該文件本來不存在,現已創建,請去相應的文件位置查看
第二次的運行結果是這樣的:
該文件是文件。
說明在計算機中沒有程序中的文件存在時,程序找不到當前路徑,所以就會調用創建文件的方法來新建一個空文件,接下來用記事本打開這個空文件,在裏面手動的輸入一行字:“我是一名程序員”
下面我們來讀取這些文字,讀取文字的方式有很多種,這裏涉及到Java中IO的操作,IO流是Java中讀取文件最常用的,其本質是一種在計算機中傳輸的數據,按照不同的分類標準可以分爲以下幾類:
(1)按照傳輸方向分爲:輸入流、輸出流,輸入和輸出是以程序爲參考單元的,流向程序的叫做輸入流,而從程序流向計算機文件的叫做輸出流,InputStream和Reader類爲所有輸入流的父類,而OutputStream和Writer爲所有輸出流的父類;
(2)按照處理單位分爲:字節流、字符流,字節流專門處理二進制文件的一種流,比如普通的文本文件、壓縮包、照片等等,而字符流是Java爲了處理文字而產生的一種流,專門用來將難以處理的非英文字符轉化爲字符,比如漢字,一個漢字佔兩個字節,用byte數組處理起來比較麻煩,而利用字符則方便許多。字節流用Stream表示,而字符流則用Reader和Writer表示。
(3)按照功能分爲:節點流、處理流,節點流指的是建立在節點之間,可以直接進行傳輸數據的流,如FileInputStream;處理流以節點流爲基礎,爲了給節點流增加功能的流,如OutputStreamWriter,可以將字符流轉化爲字符流輸出。
關於流的應用將會在請參考下一章。下面我們接着來討論File類,File類還有很多其他的方法,比較常用的有:
getName() 獲得文件的文件名(不包括目錄)
getParent() 獲取父文件夾名稱
listFiles() 獲得當前文件夾下面的所有子文件,並存放在File[]中
mkdirs() 對當前文件夾的字符串創建文件
下一篇我們來繼續討論文件輸入與輸出流