1. 程式人生 > >Java基礎-----IO流

Java基礎-----IO流

package cn.itcast.file;


import java.io.File;


/*
 IO流(Input,Output):
 
 IO技術的主要作用是解決裝置與裝置之間的資料傳輸問題。比如:硬碟--->記憶體  記憶體的資料---->硬碟上   把鍵盤的資料----記憶體中


IO技術的應用場景:
   匯出報表,  上傳大頭照,下載、解析xml檔案。。。。
   
   資料儲存到硬碟上,資料就可以做到永久性的儲存,該資料一般是以檔案的形式儲存到硬碟上。
   
   sun 使用了File類描述了檔案或者資料夾的
   
   File類可以描述一個檔案或者一個資料夾。
   
   File類的構造方法:
      File(String pathname)  指定檔案或者資料夾的路徑建立一個File檔案
      
      File(File parent,String child)  根據parent抽象路徑名和child 路徑名字字串建立一個新File例項
      
      File(String parent,String child)
      
      
      目錄分隔符:在Windows機器上的目錄分隔符是\,在Linux機器上的目錄分隔符是/。
      
      注意:在windows上面\和/都可以使用作為目錄分隔符。而且,如果寫/的時候只需要寫一個即可。
*/
public class Demo1 {


public static void main(String[] args) {
//File file = new File("F:\\log_network.txt");//在Linux機器上此分隔符是不合法的

//File parentFile = new File("F:\\");
//File file = new File(parentFile,"log_network.txt");

//File file = new File("F:/log_network.txt");
File file = new File("F:\\","log_network.txt");
System.out.println("存在麼?"+file.exists());//exists()判斷該檔案是否存在,存在返回true,不存在返回false
        System.out.println("目錄分隔符:"+File.separator);

}

public static void test(String child){

}


}



package cn.itcast.file;


import java.io.File;


/*
路徑問題:
絕對路徑:該檔案在硬碟上的完整路徑。絕對路徑一般以碟符開頭


相對路徑:相對路徑就是資原始檔相對於當前程式所在的路徑
.當前路徑
。。上一級路徑


注意:如果程式當前所在的路徑與資原始檔不是在同一個盤下面,是沒法寫相對路徑的
 */
public class Demo2 {


public static void main(String[] args) {
File file = new File(".");
System.out.println("當前路徑:"+file.getAbsolutePath());


File file2 = new File("..\\..\\..\\log_network.txt");
System.out.println("存在麼?"+file2.exists());
}


}



package cn.itcast.file;


import java.io.File;
import java.io.IOException;


/*
 建立:
 
 createNewFile() 在指定位置建立一個空檔案,成功就返回true,如果已存在就不建立返回返回false
 mkdir()  在指定位置建立目錄,這隻會建立最後一一級目錄,如果上級目錄不存在就丟擲異常。
 mkdirs()  在指定位置建立目錄,這會建立路徑中所有不存在的目錄。
 renameTo(File dest) 重新命名檔案或者資料夾,也可以操作非空的資料夾,檔案不同時相當於檔案的剪下,剪下時候不能操作非空的資料夾。移動/重新命名成功則返回true
 */
public class Demo3 {


public static void main(String[] args) throws IOException {
File file = new File("F:\\b.txt");
System.out.println("建立成功了嗎?"+file.createNewFile());//createNewFile()建立一個指定的檔案,如果該檔案存在則不會建立,則不會再建立,如果還沒有存在則建立。建立成功返回true,否則返回false。


File dir = new File("F:\\aaa");
System.out.println("建立資料夾成功了麼?"+dir.mkdir());//建立一個單級資料夾

dir = new File("F:\\aaa\\bb");
System.out.println("建立多級資料夾:"+ dir.mkdirs());

//renameTo() 如果目標檔案與原始檔是在同一個路徑下面,那麼renameTo的作用是重新命名。如果目標檔案與原始檔不是在同一個路徑下,那麼renameTo的作用就是剪下,而且還不能操作資料夾只能操作檔案

File destFile = ("F:\\abc.txt");
System.out.println("重新命名成功麼?"+file.renameTo(destFile));

}


}



package cn.itcast.file;


import java.io.File;


/*
刪除:
delete() 刪除檔案或一個空資料夾,如果是資料夾且不為空,則不能刪除,成功返回true,失敗返回false。
deleteOnExit() 在虛擬機器終止時,請求刪除此抽象路徑名錶示的檔案或目錄,保證程式異常時建立的臨時檔案也可以被刪除




判斷:
exists() 檔案或資料夾是否存在。
isFile() 是否是一個檔案,如果不存在,則始終為false。
isDirectory() 是否是一個目錄,如果不存在,則始終為false。
isHidden() 是否是一個隱藏的檔案或是否是隱藏的目錄。
isAbsolute() 測試此抽象路徑名是否為絕對路徑名。






*/
public class Demo4 {

public static void main(String[] args) {
/*
   刪除的。
* File file = new File("F:\\a.txt");
System.out.println("刪除成功嗎? "+ file.delete()); //delete方法不能用於刪除非空的資料夾。 delete方法會馬上刪除一個檔案。
file.deleteOnExit();  //jvm退出的時候刪除檔案。  一般用於刪除臨時 檔案。
System.out.println("哈哈哈");

判斷
*/
File file = new File("..\\..\\a.txt");
System.out.println("存在嗎?"+ file.exists());
System.out.println("判斷是否是一個檔案:"+file.isFile()); //如果是檔案返回true,否則返回false.
System.out.println("判斷是否是一個資料夾:"+ file.isDirectory()); // 是資料夾返回ture,否則返回false.
System.out.println("是隱藏的 檔案嗎:"+ file.isHidden());
System.out.println("是絕對路嗎?"+ file.isAbsolute());
}


}




package cn.itcast.file;


import java.io.File;
import java.sql.Date;
import java.text.SimpleDateFormat;


/*
獲取:
getName() 獲取檔案或資料夾的名稱,不包含上級路徑。
getPath()       返回絕對路徑,可以是相對路徑,但是目錄要指定
getAbsolutePath() 獲取檔案的絕對路徑,與檔案是否存在沒關係
length() 獲取檔案的大小(位元組數),如果檔案不存在則返回0L,如果是資料夾也返回0L。
getParent() 返回此抽象路徑名父目錄的路徑名字串;如果此路徑名沒有指定父目錄,則返回null。
lastModified() 獲取最後一次被修改的時間。



*/
public class  Demo5{


public static void main(String[] args) {
File file = new File("..\\..\\a.txt");
System.out.println("檔名:"+ file.getName());
System.out.println("獲取絕對路徑:"+ file.getPath());
System.out.println("getAbsolutePath獲取絕對路徑:"+file.getAbsolutePath());
System.out.println("獲取檔案的的大小(位元組為單位):"+ file.length());
System.out.println("獲取檔案的父路徑:"+ file.getParent());

//使用毫秒值轉換成Date物件
long lastModified = file.lastModified();
Date date = new Date(lastModified);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
System.out.println("獲取最後一次的修改時間(毫秒值):"+ dateFormat.format(date) );

}


}





package cn.itcast.file;


import java.io.File;


/*
資料夾相關:
staic File[] listRoots() 列出所有的根目錄(Window中就是所有系統的碟符)
list() 返回目錄下的檔案或者目錄名,包含隱藏檔案。對於檔案這樣操作會返回null。
listFiles() 返回目錄下的檔案或者目錄物件(File類例項),包含隱藏檔案。對於檔案這樣操作會返回null。




list(FilenameFilter filter) 返回指定當前目錄中符合過濾條件的子檔案或子目錄。對於檔案這樣操作會返回null。
listFiles(FilenameFilter filter) 返回指定當前目錄中符合過濾條件的子檔案或子目錄。對於檔案這樣操作會返回null。
*/
public class Demo6 {

public static void main(String[] args) {
/*File[] roots = File.listRoots(); //列出所有的根目錄
for(File file  : roots){
System.out.println(file);
}*/

File file = new File("F:\\1208\\day17");

/*
String[] fileNames = file.list(); //把 當前資料夾下面的所有子檔名與子資料夾名 儲存到一個String型別 的陣列中 返回。
for(String fileName : fileNames){
System.out.println(fileName);
}*/


File[] files = file.listFiles(); // 把 當前資料夾下面的所有子檔案與子資料夾都使用了一個FIle物件描述,然後把這些File物件儲存到一個FIle陣列中返回
for(File fileItem : files){
System.out.println("檔名:"+ fileItem.getName());
}



}


}




package cn.itcast.file;


import java.io.File;
import java.io.FilenameFilter;
/*
需求1 :  指定一個資料夾,然後該資料夾下面所有java檔案。


需求2: 指定一個資料夾,然後列出資料夾下面的所有子檔案與資料夾,但是格式要如下:
 
檔案:
檔名1
檔名2
檔名3
..


資料夾:
資料夾名1
資料夾名2
資料夾名3
....


listFiles(FilenameFilter filter) 返回指定當前目錄中符合過濾條件的子檔案或子目錄。對於檔案這樣操作會返回null。
list(fileNameFilter filter) 返回指定當前目錄中符合過濾條件的子檔案或子目錄。對於檔案這樣操作會返回null。


*/


// 自定義一個檔名過濾器
class MyFilter implements FilenameFilter{


@Override
public boolean accept(File dir, String name) {
//System.out.println("資料夾:"+dir+" 檔名:"+ name);
return name.endsWith(".java");
}

}






public class Demo7 {

public static void main(String[] args) {
File dir = new File("F:\\1208\\day06\\程式碼\\day06");
listJava2(dir);

}

public static void listJava2(File dir){
File[] files = dir.listFiles(new MyFilter()); //得到資料夾下面的所有子檔案與資料夾。
for(File file : files){
System.out.println(file.getName());
}
}




//列出所有的java檔案
public static void listJava(File dir){
File[] files = dir.listFiles(); //獲取到了所有的子檔案
for(File file : files){
String fileName = file.getName();
/*if(fileName.endsWith(".java")&&file.isFile()){
System.out.println(fileName);
}*/

if(fileName.matches(".+\\.java")&&file.isFile()){
System.out.println(fileName);
}

}
}



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


}







}