1. 程式人生 > >9.26 Java io流學習總結

9.26 Java io流學習總結

Java中把資料的傳輸稱為"流"。Java中的"流"都在Java.io包中,稱為io流。 io流有許多種,按照操作資料的不同,可以分為位元組流和字元流,按照資料傳輸方向的不同又可分為輸入流和輸出流, 程式從輸入流中讀取資料,向輸出流中寫入資料。 若我們想文字檔案寫文字 輸出流 (寫入資料),只能從中讀取資料,而不能向其寫入資料。 若我們想讀取文字檔案的文字 輸入流 (讀取資料),只能向其寫入資料,而不能向其讀取資料。

File

File:檔案或目錄(資料夾) 路徑名的抽象表示形式 個人理解:就是用來建立檔案或者目錄的。 構造方法: File(File parent, String child): 根據一個父File物件和一個子檔案[目錄]得到File物件 File(String pathname):根據一個路徑得到File物件 File(String parent, String child):根據一個目錄和一個子檔案[目錄]得到File物件 例子:

	File f1 = new File("F:\\File練習題\\a.txt");(這裡得到的是一個File物件,是根據路徑得到的物件並不是說這裡就建立了一個檔案,其中 \\ 等於windows中的 \ ,或者用 / 代表windows中的 \ )
	File f2 = new File("F:/File練習題", "a.txt");
	File f3 = new File(f1,"a.txt");

1.建立功能: public boolean createNewFile():建立檔案, 如果存在這樣的檔案,就不建立了。 public boolean mkdir():建立資料夾,如果存在這樣的目錄,就不建立了 public boolean mkdirs():建立資料夾,如果父目錄不存在,則幫你建立

例如:

File f1 = new File("F:\\File練習題\\a.txt");
try {
	System.out.println(f1.createNewFile());
} catch (IOException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}
File f2 = new File("F:\\File練習題\\b.txt");
System.out.println(f2.mkdir());

File f3 = new File("F:\\File練習題\\javaTest\\demo");
	f3.mkdirs();

2.刪除功能:

	public boolean delete():

注意: A.如果你建立檔案或者目錄忘了寫碟符路徑,那麼預設下專案目錄路徑下 B.Java中的刪除是不走回收站的 C.要刪除一個目錄,請注意該目錄內不能包含目錄或者檔案(就是說如果你要刪除的那個資料夾(目錄)裡還有其他檔案或資料夾(目錄)就不能刪除)。

例如:

	System.out.println(f4.delete());//刪除檔案
	File f5 = new File("F:\\File練習題");
	System.out.println(f5.delete());//File練習題下還有其他檔案,所以不能刪除

3.重新命名功能: public boolean renameTo(File dest) 如果路徑名相同,就是改名 如果路徑名不相同,就是改名並剪下

例如:

File f1 = new File("F:\\File練習題\\javaTest");
File f3 = new File("F:\\File練習題");

File f2 = new File(f1,"a.txt");

//重新命名
boolean renameTo2 = f2.renameTo(new File(f1,"b.txt"));
System.out.println(renameTo2);

5.判斷功能: public boolean isDirectory():判斷是否是目錄

File f = new File("E:\\javaTest\\demo");
	File f1 = new File(f, "1");
	System.out.println(f1.isDirectory());//false
	System.out.println(f.isDirectory());//true

public boolean isFile():判斷是否是檔案

System.out.println(f.isFile());//false
System.out.println(f1.isFile());//true

public boolean exists():判斷是否存在

System.out.println(new File("e:\\aa").exists());//false
	System.out.println(f1.exists());//true
	System.out.println(f.exists());//true

public boolean canRead():判斷是否可讀

System.out.println(f1.canRead());//true

public boolean canWrite():判斷是否可寫

System.out.println(f1.canWrite());//false

public boolean isHidden():判斷是否隱藏

System.out.println(f1.isHidden());//false

6.獲取功能

public String getAbsolutePath():獲取絕對路徑

File f1 = new File("F:\\File練習題\\javaTest");
	File f2 = new File(f1,"b.txt");
	System.out.println(f2.getAbsolutePath());
	System.out.println(f1.getAbsolutePath());

public String getPath():獲取相對路徑

System.out.println(f2.getPath());//F:\File練習題\javaTest\b.txt

public String getName():獲取名稱

System.out.println(f2.getName());//b.txt

public long length():獲取長度,位元組數

System.out.println(f2.length());

public long lastModified():獲取最後一次的修改的時間,毫秒數

f2.lastModified();

public String[] list():獲取指定目錄下的所有檔案或者目錄的名稱陣列

String[] list = f1.list();
System.out.println(Arrays.toString(list));

public File[] listFiles():獲取指定目錄下的所有檔案或者目錄的File陣列

File[] listFiles = f1.listFiles();
	for (File file : listFiles) {
		System.out.println(file.getName()+"是否是檔案:"+file.isFile());
		if(file.isFile()) {
			file.delete();
		}
	}

File 練習題: 判斷E盤目錄下是否有後綴名為.jpg的檔案,如果有,就輸出該檔名稱

File f = new File("e:/");	
File[] listFiles = f.listFiles();
for (File file : listFiles) {
	if(file.isFile()){
		if(file.getName().endsWith(".jpg")){
			System.out.println(file.getName());
		}
	}
}

檔案過濾器: public String[] list(FilenameFilter filter) public File[] listFiles(FilenameFilter filter) 還是上面的例子:

String[] list = f1.list(new FilenameFilter() {
		
	@Override
	public boolean accept(File dir, String name) {
	//dir 表示就是指定的目錄  name:指定目錄下的子目錄或者檔案的名稱
		return new File(dir,name).isFile()&& name.endsWith(".jpg");
	}
});
System.out.println(Arrays.toString(list));