一起來了解Java的File類和IO流
1.IO流介紹
IO流可以用到的地方很多,就比如設(shè)計(jì)模式、下載、傳輸?shù)鹊?。學(xué)好IO流,為之后的進(jìn)一步學(xué)習(xí)打下基礎(chǔ),那么,先來說說什么是流?
流是一個抽象的概念,當(dāng)程序讀取數(shù)據(jù)時(shí),就會開啟一個通往數(shù)據(jù)源的流,這個數(shù)據(jù)源可以是文件、內(nèi)存或者是網(wǎng)絡(luò)鏈接;當(dāng)程序?qū)懭霐?shù)據(jù)時(shí),就會開啟一個通往目的地的流。
java中把不同到的來源或者目的地的數(shù)據(jù)都統(tǒng)一抽象為數(shù)據(jù)流
本質(zhì):就是對數(shù)據(jù)的傳輸,數(shù)據(jù)的一個結(jié)合,有方向性
IO流體系結(jié)構(gòu)

流的實(shí)現(xiàn)類:

2.Java中流的分
2.1按流向分:
- 輸入流:程序可以從中讀取數(shù)據(jù)的流
- 輸出流:程序能向其中寫入數(shù)據(jù)的流

輸入流:從數(shù)據(jù)源讀取數(shù)據(jù)流到程序(數(shù)據(jù)源:磁盤/U盤/網(wǎng)絡(luò)/鍵盤)
輸出流:從程序?qū)懭氲侥康牡兀康牡兀捍疟P/U盤/網(wǎng)絡(luò)/顯示器)
2.2按數(shù)據(jù)傳輸單位分:
字節(jié)流:以字節(jié)為單位傳輸數(shù)據(jù)的流
字符流:以字符為單位傳輸數(shù)據(jù)的流
2.3按功能分:
節(jié)點(diǎn)流:用于直接操作目標(biāo)設(shè)備的流
過濾流:對一個已存在的流進(jìn)行包裝,以提供更強(qiáng)大和靈活的讀寫功能
3.File類介紹
IO流從文件中輸入輸出,至始至終都離不開文件,所以先來說說文件file類。
3.1file類的作用
File類主要作用是對文件和目錄的抽象表示,該類主要是對目錄和文件進(jìn)行創(chuàng)建、修改、刪除、過濾等造作
3.2file類構(gòu)造函數(shù)
File(String pathname) //將路徑字符串實(shí)例化File實(shí)例 File(String parent, String child) //從父路徑名和子路徑名來構(gòu)建file實(shí)例 File(File parent, String child) //根據(jù)父路徑File實(shí)例和子路徑名來構(gòu)建實(shí)例

//pathname
File img1 = new File("/Users/gongdezhe/Desktop/IO/img1.png");
?
//parent, child
File img2 = new File("/Users/gongdezhe/Desktop/IO", "img2.png");
?
?
//File parent, String child
File parent = new File("/Users/gongdezhe/Desktop/IO");
File sql = new File(parent, "SQL.txt");3.3絕對路徑和相對路徑
- 絕對路徑:從盤符開始的路徑,表示一個完成的路徑 (windows:C:\ linux /mac: / )
- 相對路徑:不帶盤符的路徑即是相對路徑 "."表示當(dāng)前路徑 “..”表示父路徑
分隔符:
windows分隔符:\
mac分割符:/
java中有常量分隔符:File.separator ;*//根據(jù)系統(tǒng)不同自動生成對應(yīng)分隔符 *String path = "test"+File.separator+"test.txt";
//windows test\test.txt **//linux test/test.txt
3.3File常見的方法
3.3.1創(chuàng)建和刪除
File test = new File("/Users/gongdezhe/Desktop/IO/sql2.txt");
?
try {
public boolean createNewFile() throws IOException
// 創(chuàng)建新文件 當(dāng)文件不存在時(shí)創(chuàng)建該文件并返回true,當(dāng)文件存在是則返回false
boolean newFile = sql2.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
boolean mkdir()
// 通過抽象路徑來創(chuàng)建目錄,創(chuàng)建多級目錄時(shí),mkdir創(chuàng)建失敗
test.mkdir();
?
boolean mkdirs()
//創(chuàng)建目錄 創(chuàng)建多級目錄
test.mkdirs();
?
//刪除目錄和文件
test.delete();注意:創(chuàng)建文件時(shí),如果文件不存在,則創(chuàng)建新文件,如果存在,則返回false
創(chuàng)建文件時(shí),文件的父目錄不存在時(shí),創(chuàng)建文件會失敗
3.3.2文件獲取
String getAbsolutePath()
//獲取當(dāng)前文件或目錄的絕對路徑
test.getAbsolutePath();
System.out.println(test.getAbsolutePath());
?
String getPath()
//將抽象路徑名轉(zhuǎn)換為路徑字符串
test.getPath();
System.out.println(test.getPath());
?
String getName()
//獲取文件或者是目錄的名稱
test.getName();
System.out.println(test.getName());
?
long length()
//獲取文件的字節(jié)數(shù)
test.length();
System.out.println(test.length());
?
String[] list()
//返回目錄中文件和目錄的名稱的字符串?dāng)?shù)組
String[] list = test.list();
for (String i:list) {
System.out.println(i);
}
?
File[] listFiles()
//返回目錄中文件和目錄的名稱file實(shí)例數(shù)組
File[] files = test.listFiles();3.3.3過濾功能的接口方法
public interface FilenameFilter {
//參數(shù)為目錄和指定過濾名稱
//返回結(jié)果 true: 可以返回 false:不能返回
boolean accept(File dir, String name);
}之后會持續(xù)更新,包括集合、java基礎(chǔ)知識等,適合剛接觸學(xué)習(xí)的人。
到此這篇關(guān)于一起來了解Java的File類和IO流的文章就介紹到這了,更多相關(guān)Java File類和IO流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
DoytoQuery中的關(guān)聯(lián)查詢方案示例詳解
這篇文章主要為大家介紹了DoytoQuery中的關(guān)聯(lián)查詢方案示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Spring AOP 實(shí)現(xiàn)自定義注解的示例
這篇文章主要介紹了Spring AOP 實(shí)現(xiàn)自定義注解的示例,幫助大家更好的理解和學(xué)習(xí)使用spring框架,感興趣的朋友可以了解下2021-03-03
淺談用java實(shí)現(xiàn)事件驅(qū)動機(jī)制
這篇文章主要介紹了淺談用java實(shí)現(xiàn)事件驅(qū)動機(jī)制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09

