Java基礎-----IO流
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 {
//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.separator);
}
public static void test(String child){
}
}
package cn.itcast.file;
import java.io.File;
/*
路徑問題:
絕對路徑:該檔案在硬碟上的完整路徑。絕對路徑一般以碟符開頭
相對路徑:相對路徑就是資原始檔相對於當前程式所在的路徑
.當前路徑
。。上一級路徑
注意:如果程式當前所在的路徑與資原始檔不是在同一個盤下面,是沒法寫相對路徑的
*/
public class Demo2 {
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());
}
}
}
}