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));