說明:參考代碼部分的時候魂莫,請忽略異常處理語句挡育。I/O中異常的有效處理辦法請看【I/O異常處理】章節(jié)
/*
* I/O流(input/ output)
* 作用:解決設(shè)備與設(shè)備之間的數(shù)據(jù)傳輸問題腾誉,例如:
* -- 硬盤數(shù)據(jù)讀取到內(nèi)存
* -- 鍵盤數(shù)據(jù)讀取到內(nèi)存中
* -- 將內(nèi)存數(shù)據(jù)寫到硬盤中
*
* 應(yīng)用場景:
* -- 報表導(dǎo)入
* -- 上傳圖片
* -- 數(shù)據(jù)下載
*
* 數(shù)據(jù)以文件的形式保存在內(nèi)存上幔摸,可以永久保存废睦,java中用一個File類來描述文件或是文件夾
*
* File類的構(gòu)造方法
* -- File(String pathNma)
* 通過自定【文件】或【文件夾】的路徑來創(chuàng)建一個FIle對象施符,將字符串路徑轉(zhuǎn)換成抽象的路徑
*
* -- File(File parent, String child)
* 根據(jù)抽象父路徑和字符串文件或是文件夾名穿件一個File對象
*
* -- File(String parent, String child)
* 根據(jù)字符串父路徑和字符串文件或是文件夾名穿件一個File對象
*
* 注意:Windows機器的目錄分隔符是:\ ; linux機器上的文件分隔符是/
* File中提供了File.separator常量來獲取當前平臺的分隔符
* windows上\和/都可以作為文件分隔符,使用/的時候用一個皆可以了秀姐,用\需要兩個慈迈;
*
*
* 絕對路徑和相對路徑
* 絕對路徑:從根目錄開始定位的路徑
* 相對路徑:資源文件相對于當前程序所在的路徑
* -- . 當前路徑
* -- .. 上級路徑
*
*
* File類常見方法
* 1. 創(chuàng)建
* createNewFile()? 在定位的路徑下面創(chuàng)建一個空文件,創(chuàng)建成果返回true,如果文件存在不創(chuàng)建返回false
* mkdir() 創(chuàng)建單級文件夾
* mkdirs() 創(chuàng)建多級別文件夾
* renameTo(File dest) 重命名文件或是文件夾省有,如果目標文化和當前文件在同一文件夾下痒留,就是重命名
* 如果不在同一個路徑下,就是剪切的作用蠢沿。
*
*
* 2. 刪除
* delete() 刪除一個文件夾或是文件,刪除成功返回true,刪除失敗返回false,不能刪除非空文件夾
*? deleteOnExit() jvm退出的時候刪除文件伸头,退出時自動刪除,一般用于刪除零時文件
*
* 3.判斷
* exists() 判斷文件或是文件夾是否存在
* isFile() 是否是文件
* isDirectory 是否是文件夾
* isHidden() 是否是一個隱藏文件/文件夾
* isAbaolute() 抽象路徑是否為絕對路徑
*
* 4.獲取
* getName() 獲取文件或是文件夾的名稱舷蟀,不包含上級目錄
* getPath() 獲取絕對路徑恤磷,可以是相對路徑,但是目錄要指定
* getAbsolute() 獲取文件的絕對路徑野宜,與文件是否存在沒關(guān)系
*? length() 獲取文件的大猩ú健(字節(jié)),如果文件不存在返回0l,如果是文件夾返回0l
*? getParent() 返回此抽象路徑名父目錄的路徑名字符串,如果此路徑?jīng)]有指定父路徑匈子,返回null
*? lastModified() 返回最后一次唄修改的時間(毫秒)
*
*? 5. 文件夾操作
*? static File[] listRoots() 獲取所有的根目錄河胎,windows中就是所有的盤符
*? list() 列出所有的目錄下的文件,包括隱藏文件和子文件虎敦,不會迭代列出,返回一個路徑數(shù)組游岳,如果是目錄是文件則返回null
*? list(FIleNameFilter filter)
*? listFiles() 返回File對象的文件數(shù)組
*? listFiles(filenameFIlter filter)
*
*? 6.其他操操作
*? listFiles(FilenameFilter filter) 返回當前目錄中符合過濾條件的文件或是字子目錄政敢,如果目錄是文件,則返回null
*? list(FileNameFIlter filter) 返回當前目錄中符合過濾條件的文件或是字子目錄胚迫,如果目錄是文件喷户,則返回null
*
*/
package com.michael.jdk15;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
//定義一個文件名過濾器
class MyFilter implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
//dir 文件目錄
// name //文件名
return name.endsWith(".java");
}
}
public class Demo8 {
public static void main(String[] args){
File file = new File("c:\\");
File file1 = new File("c:\\Users\\c.txt");
System.out.println("存在嗎?" + file.exists()); //判斷文件是否存在
System.out.println("文件夾存在嗎?" + file1.exists());
File file2 = new File("c:\\");
File file3 = new File(file2, "c.txt");
System.out.println("文件存在嗎?" + file3.exists());
System.out.println("絕對路徑" + file.getAbsolutePath()); //絕對路徑
try {
System.out.println("創(chuàng)建成功了嗎" + file1.createNewFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String[] fileName = file.list();
for(String f:fileName){
System.out.println(f);
}
//列出所有的.java文件
File filePath = new File("E:\\JBASE\\day19\\src\\com\\michael\\jdk15");
File[] fileArr = filePath.listFiles(); //獲取所有的子文件(夾)
for(File f : fileArr){
//方式一:使用字符串篩選
/*if(f.getName().endsWith(".java")){ //判斷文件名是否以.java結(jié)尾
System.out.println(f.getName()); //輸出文件名
}*/
//方式二:使用正則篩選
if(f.isFile()&&f.getName().matches(".+\\.java"));
System.out.println(f.getName());
}
}
//分類格式化輸出文件(夾):
public static void listFile(File dir){
File[] files = dir.listFiles();
System.out.println("文件:");
for(File fileItem : files){
if(fileItem.isFile()){
System.out.println("\t" + fileItem.getName());
}
}
System.out.println("文件夾:");
for(File fileItem : files){
if(fileItem.isDirectory()){
System.out.println("\t" + fileItem.getName());
}
}
}
}