I/O淺談

一走诞、什么是I/O

我們正式的來(lái)學(xué)習(xí)IO流。那什么是IO流呢蛤高?其實(shí)我們身邊就經(jīng)常在用蚣旱,比如說(shuō):QQ上傳個(gè)圖片碑幅,更改下圖標(biāo),但凡涉及到文件傳輸了塞绿,都要用到它枕赵。接下來(lái),我們就來(lái)揭曉它的廬山真面目位隶。今天的內(nèi)容分以下兩塊:File類(lèi)的基本概述拷窜,F(xiàn)ile類(lèi)的功能使用

回想之前寫(xiě)過(guò)的程序,數(shù)據(jù)都是在內(nèi)存中涧黄,一旦程序運(yùn)行結(jié)束篮昧,這些數(shù)據(jù)都沒(méi)有了,等下次再想使用這些數(shù)據(jù)笋妥,可是已經(jīng)沒(méi)有了懊昨。那怎么辦呢?能不能把運(yùn)算完的數(shù)據(jù)都保存下來(lái)春宣,下次程序啟動(dòng)的時(shí)候酵颁,再把這些數(shù)據(jù)讀出來(lái)繼續(xù)使用呢?其實(shí)要把數(shù)據(jù)持久化存儲(chǔ)月帝,就需要把內(nèi)存中的數(shù)據(jù)存儲(chǔ)到內(nèi)存以外的其他持久化設(shè)備(硬盤(pán)躏惋、光盤(pán)、U盤(pán)等)上嚷辅。

當(dāng)需要把內(nèi)存中的數(shù)據(jù)存儲(chǔ)到持久化設(shè)備上這個(gè)動(dòng)作稱(chēng)為輸出(寫(xiě))Output操作簿姨。

當(dāng)把持久設(shè)備上的數(shù)據(jù)讀取到內(nèi)存中的這個(gè)動(dòng)作稱(chēng)為輸入(讀)Input操作。

因此我們把這種輸入和輸出動(dòng)作稱(chēng)為IO操作簸搞。

二扁位、File類(lèi)

File的概念

  • File類(lèi)是文件和目錄路徑名的抽象表示形式

  • Java中把文件或者目錄(文件夾)都封裝成File對(duì)象

  • 我們要去操作硬盤(pán)上的文件,或者文件夾只要找到File這個(gè)類(lèi)即可

注:一般操作系統(tǒng)數(shù)據(jù)存在文件當(dāng)中趁俊,有三種形式表示域仇,文件,文件夾寺擂,路徑暇务。

  • java.io.File

  • 將操作系統(tǒng)中的,文件,目錄(文件夾),路徑,封裝成File對(duì)象

  • 提供方法,操作系統(tǒng)中的內(nèi)容

  • File與系統(tǒng)無(wú)關(guān)的類(lèi)

  • 文件 file

  • 目錄 directory

  • 路徑 path


**public static void main(String[] args) {** 

//File類(lèi)靜態(tài)成員變量

//與系統(tǒng)有關(guān)的路徑分隔符

String separator = File.pathSeparator;

System.out.println(separator);// 是一個(gè)分號(hào),目錄的分割  Linux :

//與系統(tǒng)有關(guān)的默認(rèn)名稱(chēng)分隔符

separator = File.separator;

System.out.println(separator);// 向右 \  目錄名稱(chēng)分割  Linux /

}

FILE 構(gòu)造方法

image

public static void main(String [] args){

File file = new File("d:\\eclipse");//斜線寫(xiě)倆個(gè) 因?yàn)橐粋€(gè)報(bào)錯(cuò)了 會(huì)轉(zhuǎn)意

System.out.println(file);//windows 操作系統(tǒng)不區(qū)分大小寫(xiě)  Linux區(qū)分

}

科普:

路徑

絕對(duì)路徑

在系統(tǒng)中具有唯一性

c:\windows\system32

相對(duì)路徑

表示路徑之間的關(guān)系

D:\develop\Java\jdk1.7.0_72\bin

D:\develop\Java\jre7

路徑之間關(guān)系

Java 父目錄是D:\develop

Java 子目錄是:jdk1.7.0_72

父路徑是 唯一性

子目錄是可以多個(gè)

FILE其他的構(gòu)造方法


/*

*  File(File parent,String child)

*  傳遞路徑,傳遞File類(lèi)型父路徑,字符串子路徑

*  好處: 父路徑是File類(lèi)型,父路徑可以直接調(diào)用File類(lèi)方法

*/

public static void function_2(){

File parent = new File("d:");

File file = new File(parent,"eclipse");

System.out.println(file);

}

/*

*  File(String parent,String child)

*  傳遞路徑,傳遞字符串父路徑,字符串子路徑

*  好處: 單獨(dú)操作父路徑和子路徑

*/

public static void function_1(){

File file = new File("d:","eclipse");

System.out.println(file);

}

File類(lèi)創(chuàng)建文件功能


/*

*  File創(chuàng)建文件的功能

*  boolean createNewFile()

*  創(chuàng)建的文件路徑和文件名,在File構(gòu)造方法中給出

*  文件已經(jīng)存在了,不在創(chuàng)建

*/

public static void function()throws IOException{

File file = new File("c:\\a.txt");

boolean b = file.createNewFile();

System.out.println(b);

}

File類(lèi)創(chuàng)建目錄功能

/*

*  File創(chuàng)建文件夾功能

*  boolean mkdirs() 創(chuàng)建多層文件夾

*  創(chuàng)建的路徑也在File構(gòu)造方法中給出

*  文件夾已經(jīng)存在了,不在創(chuàng)建

*/

public static void function_1(){

File file = new File("c:\\abc");

boolean b = file.mkdirs();

System.out.println(b);

}

File類(lèi)刪除功能


/*

*  File類(lèi)的刪除功能

*  boolean delete()

*  刪除的文件或者是文件夾,在File構(gòu)造方法中給出

*  刪除成功返回true,刪除失敗返回false

*  刪除方法,不走回收站,直接從硬盤(pán)中刪除

*  刪除有風(fēng)險(xiǎn),運(yùn)行需謹(jǐn)慎

*/

public static void function_2(){

File file = new File("c:\\a.txt");

boolean b = file.delete();

System.out.println(b);

}

File類(lèi)獲取功能

  • a: 方法介紹

  • String getName(): 返回路徑中表示的文件或者文件夾名

  • 獲取路徑中的最后部分的名字

  • long length(): 返回路徑中表示的文件的字節(jié)數(shù)

  • String getAbsolutePath(): 獲取絕對(duì)路徑,返回String對(duì)象

  • File getAbsoluteFile() : 獲取絕對(duì)路徑,返回File對(duì)象

  • eclipse環(huán)境中,寫(xiě)一個(gè)相對(duì)路徑,絕對(duì)位置工程根目錄

  • String getParent(): 獲取父路徑,返回String對(duì)象

  • File getParentFile(): 獲取父路徑,返回File對(duì)象


/*

* File類(lèi)的獲取功能

* String getParent() 返回String對(duì)象

* File getParentFile()返回File對(duì)象

* 獲取父路徑

*/

public static void function_3(){

File file = new File("d:\\eclipse\\eclipse.exe");

File parent = file.getParentFile();

System.out.println(parent);

}

/*

* File類(lèi)獲取功能

* String getAbsolutePath() 返回String對(duì)象

* File  getAbsoluteFile() 返回File對(duì)象

* 獲取絕對(duì)路徑

* eclipse環(huán)境中,寫(xiě)的是一個(gè)相對(duì)路徑,絕對(duì)位置工程根目錄

*/

public static void function_2(){

File file = new File("src");

File absolute = file.getAbsoluteFile();

System.out.println(absolute);

}

/*

* File類(lèi)獲取功能

* long length()

* 返回路徑中表示的文件的字節(jié)數(shù)

*/

public static void function_1(){

File file = new File("d:\\eclipse\\eclipse.exe");

long length = file.length();

System.out.println(length);

}

/*

*  File類(lèi)的獲取功能

*  String getName()

*  返回路徑中表示的文件或者文件夾名

*  獲取路徑中的最后部分的名字

*/

public static void function(){

File file = new File("d:\\eclipse\\eclipse.exe");

String name = file.getName();

System.out.println(name);

/*String path = file.getPath();

System.out.println(path);*/

// System.out.println(file);

}

File類(lèi)判斷功能

  • boolean exists(): 判斷File構(gòu)造方法中封裝路徑是否存在

  • 存在返回true,不存在返回false

  • boolean isDirectory(): 判斷File構(gòu)造方法中封裝的路徑是不是文件夾

  • 如果是文件夾,返回true,不是文件返回false

  • boolean isFile(): 判斷File構(gòu)造方法中封裝的路徑是不是文件

  • 如果是文件,返回true,不是文件返回false


/*

*  File判斷功能

*  boolean isDirectory()

*  判斷File構(gòu)造方法中封裝的路徑是不是文件夾

*  如果是文件夾,返回true,不是文件返回false

* 

*  boolean isFile()

*  判斷File構(gòu)造方法中封裝的路徑是不是文件

*/

public static void function_1(){

File file = new File("d:\\eclipse\\eclipse.exe");

if(file.exists()){

boolean b = file.isDirectory();

System.out.println(b);

}

}

/*

*  File判斷功能

*  boolean exists()

*  判斷File構(gòu)造方法中封裝路徑是否存在

*  存在返回true,不存在返回false

*/

public static void function(){

File file = new File("src");

boolean b = file.exists();

System.out.println(b);

}

File類(lèi)list獲取功能

  • String[] list():獲取到File構(gòu)造方法中封裝的路徑中的文件和文件夾名 (遍歷一個(gè)目錄)

  • 返回只有名字

  • File[] listFiles():獲取到,File構(gòu)造方法中封裝的路徑中的文件和文件夾名 (遍歷一個(gè)目錄)

  • 返回的是目錄或者文件的全路徑

  • static File[] listRoots(): 列出可用的文件系統(tǒng)根


public static void function_2(){

//獲取系統(tǒng)中的所有根目錄

File[] fileArr = File.listRoots();

for(File f : fileArr){

System.out.println(f);

}

}

/*

*  File類(lèi)的獲取功能

*  File[] listFiles()

*  獲取到,File構(gòu)造方法中封裝的路徑中的文件和文件夾名 (遍歷一個(gè)目錄)

*  返回的是目錄或者文件的全路徑

*/

public static void function_1(){

File file = new File("d:\\eclipse");

File[] fileArr = file.listFiles();

for(File f : fileArr){

System.out.println(f);

}

}

/*

*  File類(lèi)的獲取功能

*  String[] list()

*  獲取到,File構(gòu)造方法中封裝的路徑中的文件和文件夾名 (遍歷一個(gè)目錄)

*  返回只有名字

*/

public static void function(){

File file = new File("c:");

String[] strArr = file.list();

System.out.println(strArr.length);

for(String str : strArr){

System.out.println(str);

}

}

遞歸遍歷全目錄


public static void main(String[] args) {

File dir = new File("d:\\eclipse");

getAllDir(dir);

}

/*

*  定義方法,實(shí)現(xiàn)目錄的全遍歷

*/

public static void getAllDir(File dir){

System.out.println(dir);

//調(diào)用方法listFiles()對(duì)目錄,dir進(jìn)行遍歷

File[] fileArr = dir.listFiles();

for(File f : fileArr){

//判斷變量f表示的路徑是不是文件夾

if(f.isDirectory()){

//是一個(gè)目錄,就要去遍歷這個(gè)目錄

//本方法,getAllDir,就是給個(gè)目錄去遍歷

//繼續(xù)調(diào)用getAllDir,傳遞他目錄

getAllDir(f);

}else{

System.out.println(f);

}

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沽讹,隨后出現(xiàn)的幾起案子般卑,更是在濱河造成了極大的恐慌,老刑警劉巖爽雄,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝠检,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡挚瘟,警方通過(guò)查閱死者的電腦和手機(jī)叹谁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)饲梭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人焰檩,你說(shuō)我怎么就攤上這事憔涉。” “怎么了析苫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵兜叨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我衩侥,道長(zhǎng)国旷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任茫死,我火速辦了婚禮跪但,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘峦萎。我一直安慰自己屡久,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布爱榔。 她就那樣靜靜地躺著被环,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搓蚪。 梳的紋絲不亂的頭發(fā)上蛤售,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音妒潭,去河邊找鬼。 笑死揣钦,一個(gè)胖子當(dāng)著我的面吹牛雳灾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冯凹,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼谎亩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了宇姚?” 一聲冷哼從身側(cè)響起匈庭,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浑劳,沒(méi)想到半個(gè)月后阱持,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魔熏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年衷咽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸽扁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镶骗,死狀恐怖桶现,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鼎姊,我是刑警寧澤骡和,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站相寇,受9級(jí)特大地震影響即横,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裆赵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一东囚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧战授,春花似錦页藻、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至楣导,卻和暖如春废境,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背筒繁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工噩凹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毡咏。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓驮宴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親呕缭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子堵泽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容