IO流:
IO流用來處理設備之間的數據傳輸
Java對數據的操作是通過流(系統資源)的方式
Java用於操作流的對象都在java.io包中
IO:用於處理設備上的數據技術。設備:內存,硬盤,光盤
流:系統資源,windows系統本身就可以操作設備,各種語言只是使用系統平臺上的這個資源
並對外提供了各種語言自己操作的功能,這些功能最終調用的是系統資源
使用完資源一定要 釋放。
*********File***************
將一個具體的路徑封裝成了File對象。可以封裝存在的文件或目錄,
也可以封裝不存在文件或目錄。
File file= new File("c:\\1.txt");
File file= = new File("c:\\","1.txt");
File f = new File("c:"+File.separator+"abc"+File.separator+"1.txt");
**創建文件可以沒有擴展名
創建文件夾 boolean b =file.mkdir();
創建多級目錄:file.mkdirs();
**獲取文件夾下的所有文件:
File dir = new File("c:\\");
String[] names = dir.list(); // 文件包括隱藏文件,只獲取名稱
File[] files =dir.listFiles(); // 列舉文件對象
for(File f:files){
System.out.println(f.getName()+"..."+f.length());
}
***文件過濾器***********
獲取指定目錄下的指定類型文件:
list方法:
File dir= new File("c:\\");
FilenameFilter filter= new FilterBySuffix(".class");// 後綴名是class
filter = new FilterByContain("Demo"); //名稱有Demo的文件
String[] files=dir.list(filter);
listFiles方法:
FileFilter filter = new FilterBysuffix();
File[] files = dir.listFiles(filter);
*********遞歸:函數自身調用自身。函數內部又使用到了該函數功能
什麼時候使用?
功能被重複使用,但是每次該功能使用參與運算的數據不同時,可以考慮遞歸方式解決。
使用時,一定要定義條件 。
注意遞歸次數過多,會出現棧內存溢出。
***刪除一個帶內容的文件夾,必須從裏往外刪
public static void deleteDir(File dir){
File dir = new File("E:\\test");
File[] files= dir.listFiles();
for(File file:files){
if(file.isDirectory())
{ deleteDir(file);
}else{
System.out.println(file+":"+file.delete());
}
}
System.out.println(dir+":"+dir.delete());
}
io流:
** 流按操作數據分爲兩種:字節流與字符流
流按流向分爲:輸入流(讀),輸出流(寫)
字節流的抽象基類:
InputStream , OutStream
***** FileOutputStream ************
1,創建字節輸出流對象,用於操作文件,在對象初始化時,必須明確數據存儲的目的地
輸出流所關聯的目的地,如果不存在,會自動創建,如果存在,則覆蓋。
FileOutputStream fos = new FileOutputStream("tempfile\\fos.txt");