java i/o系統
阿新 • • 發佈:2018-12-22
輸入/輸出(input/output)是指對某個物理或邏輯裝置或某種環境進行資料的輸入和輸出。
- File類
不同作業系統的路徑名稱表示是有差別的,如在windows中,一個可能的路徑名為“E:\JSP\bin”,而Linux下的路徑名可能為“/home/JSP/bin”。windows的路徑使用UNC(Universal Naming Convention)路徑名,以“\”開始的目錄表示上下文環境所在目錄的硬碟跟目錄。如果沒有以“\”作為路徑的開始,則表示相對於當前工作目錄的路徑,並且通過“碟符(C/D/E):”形式表示硬碟指定。而Linux系統沒有windows系統硬碟驅動器的概念,它的路徑以“/”開始,表示從根目錄開始的絕對路徑,不以“/”開始的路徑是相對於當前路徑的相對路徑。
注意:在java中,無論是檔案還是目錄,都是用File類的例項表示。
1、檔案或目錄的生成
File類的建構函式
public File(String path)
如果path是實際存在的路徑,則該File物件表示的是目錄;如果path是檔名,則該File物件表示的是檔案。
File類的建構函式
public File(String path,String name)
path是路徑名,name是檔名。
File類的建構函式
public File(File dir,String name)
dir是路徑名,name是檔名。
2、檔名的處理
//得到一個檔案的名稱(不包括路徑) String getName() //得到一個檔案的路徑名 String getPath() //得到一個檔案的絕對路徑名 String getAbsolutePath() //得到一個檔案的上一級目錄名 String getParent() //將當前檔名更名為給定檔案的完成路徑 String renameTo(File newName)
3、檔案屬性測試
//測試當前File物件所指示的檔案是否存在
boolean exists()
//測試當前檔案是否可寫
boolean canWrite()
//測試當前檔案是否可讀
boolean canRead()
//測試當前檔案是否是檔案(不是目錄)
boolean isFile()
//測試當前檔案是否是目錄
boolean isDirectory()
4、普通檔案資訊和工具
//得到檔案最近一次修改的時間
long lastModified()
//得到檔案的長度,以位元組為單位
long length()
//刪除當前檔案
boolean delete()
5、目錄操作
//根據當前物件生成一個由該物件指定的路徑 boolean mkdir() //列出當前目錄下的檔案 String list()
6、應用
import com.sun.org.apache.xpath.internal.SourceTree;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.logging.LogRecord;
/**
* @ 描 述 : 檔案操作
* @ 作 者 : 一念〃
* @ 時 間 : 10:40 2018/11/18
* @ 備 注 :
*/
public class FileTest {
public void readFileList(File file, Filter filter){
//判斷file是否為目錄
if(file.isDirectory()){
//列出所有的檔案及目錄
File[] files = file.listFiles();//建立目錄陣列
//通過陣列建立陣列列表
ArrayList<File> fileArrayList = new ArrayList<File>();
//for迴圈變數陣列
for (int i = 0;i<files.length;i++){
//先列出目錄
if(files[i].isDirectory()){//判斷是否為目錄
//輸出路徑名
System.out.println("["+files[i].getPath()+"]");
readFileList(files[i],filter);//遞迴呼叫readFileList方法
}else{
//檔案先存入fileList,待會再列出
fileArrayList.add(files[i]);
}
}
//列出檔案
for (File f : fileArrayList){
readFileList(f,filter);//呼叫readFileList方法
System.out.println();//換行
}
}else if(file.isFile()){
//當file為檔案時
fileDesc(file);//呼叫fileDesc方法
}
}
public void fileDesc(File file){
if(file.isFile()){
//判斷是否為檔案
System.out.println(file.toString()+"\n該檔案");//輸出字串資訊
System.out.println(file.canRead()?"可讀":"不可讀");//判斷檔案是否可讀
System.out.println(file.canWrite()?"可寫":"不可寫");//判斷檔案是否可寫
System.out.println(file.length()+"位元組");//輸出位元組數
}
}
public static void main(String[] args) {
String filename = "E:\\JAVA";//給一個路徑
File file = new File(filename);//建立並初始化由檔名決定的檔案物件
Filter filter = new Filter("java");//建立並初始化檔案過濾器
//建立例項,呼叫readFileList方法
new FileTest().readFileList(file,filter);
}
}
class Filter implements FilenameFilter{
String extent;
//宣告實現Filter類的構造
Filter(String extent){
this.extent = extent;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith("."+extent);//返回檔案字尾
}
}