J2SE II一一Java中File的建立和使用

Java中File的建立和使用

1.File對象對應你磁盤上的一個文件或者文件夾(路徑),一個file對象表明了一個文件或者文件夾的引用,並非直接物理上的。java

2.File.separator: 鏈接符
public static final String separator與系統相關的默認名稱 - 分隔符字符,以方便的方式表示爲字符串。 該字符串包含一個字符,即separatorChar 。 (public static final char separatorChar與系統相關的默認名稱分隔符。 該字段被初始化爲包含系統屬性值file.separator的第一個file.separator 。 在UNIX系統上,該字段的值爲’/’ ; 在Microsoft Windows系統上是’\’ 。 )學習

3.建立File實例對象的幾種方式
第一種:spa

File file = new File("D:\\abc.txt");
System.out.println(file);

第二種:.net

// parent 前面的路徑 chid 在parent 後面追加的目錄code

File file2 = new File("D:\\c", "abc.txt");
    System.out.println(file2);

第三種:對象

File  parent = new File("D:\\d");
    File file3 = new  File(parent, "qwe.doc");
    System.out.println(file3);

4.建立文件blog

//返回的是否建立成功遞歸

try {
        boolean flag = file.createNewFile();
        System.out.println(flag);
    } catch (IOException e) {
        e.printStackTrace();
    }

5.判斷文件是否可讀寫canRead() canWrite()rem

System.out.println(file.canRead());
    // 判斷文件是否可寫
    System.out.println(file.canWrite());

6 . 判斷文件是否存在exists(), 若是不存在則 建立, 存在則不建立了字符串

if(!file2.exists()){// 判斷文件是否存在

try {
            file2.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }else{
        System.out.println("已經存在了 ");
    }

7 .建立文件夾 單層mkdir()

String string = "D:\\d";
    File file = new File(string);
    boolean flag = file.mkdir();// 建立文件夾  單層
    System.out.println(flag);

8 .利用mkdirs 能夠同時建立多層目錄

File file2 = new File("D:\d\a\c\w");

file2.mkdirs();// 利用mkdirs 能夠同時建立多層目錄

9 . 如何區分 文件或者是 文件夾

if(file2.isDirectory()){// 判斷是不是文件夾
        System.out.println("是文件夾");
    }
    if(file3.isFile()){
        System.out.println("是文件");
    }

10 . 刪除指定文件

File file2 = new File("D:\\d\\a\\c\\w");    
    File file3 = new File(file2, "abc.txt");
    boolean flag2 = file3.delete();
    System.out.println(flag2);

11 .length()判斷文件的長度 而非文件夾的長度 ,返回long類型的

long l = file3.length();
    System.out.println(l);

12 .獲得路徑

File file = new File("D:\d\a\c\w\abc.txt");

System.out.println(file.getPath());// 獲得路徑

13 .System.out.println(file.getParent());// 獲得 文件的父目錄

14 . System.out.println(file.getParentFile());// 獲得 文件的父目錄 返回的是File對象

15 .// 重命名 被其餘 佔用的時候 就不能重命名成功

File file3 = new File("D:\\d\\a\\c\\w\\hehe.txt");
    boolean flag = file.renameTo(file3);
    System.out.println(flag);

16.將文件過濾掉,文件夾保留

package com.qf.demo2;

import java.io.File;
import java.io.FilenameFilter;

/**

  • list() 返回 指定目錄 下的 全部 的 目錄和文件的名字 String[]
  • list(FilenameFilter filter) 獲得的全部的名字 進行對應的過濾
  • listFiles() 返回 指定目錄 下的 全部 的 目錄和文件的 file 對象表現形式 File[]
  • listFiles(FilenameFilter filter) 獲得的全部的名字 進行對應的過濾

*/
public class Test4 {

public static void main(String[] args) {

    //File file = new  File("D\\java上課內容\\2015新版PPT":);
    File file = new File("D:\\java上課內容");
    String[] strings = file.list();
    /*for (String string : strings) {
        System.out.println(string);
    }
    File[] files = file.listFiles();
    for (File file2 : files) {
        System.out.println(file2);
    }*/


    String[] strings2 = file.list(new MyFilter());
    for (String string : strings2) {
        System.out.println(string);
    }

    File[] file2 = file.listFiles(new MyFilter());
    for (File file3 : file2) {
        System.out.println(file3);
    }

}

}

class MyFilter implements FilenameFilter{

// dir 指定的目錄        name 是 dir 指定目錄下的文件或者是文件夾的名字
public boolean accept(File dir, String name) {

// if(name.endsWith(".txt")){
// return false;
// }

// 假如是  文件   就 過濾掉, 若是是文件夾 , 就保留
    //  D:\\java上課內容      \\   java新版ppt
    File file = new File(dir,name);
    if(file.isFile()){
        return false;
    }


    return true;// 返回ture 證實 保留下來的
                // 返回 false 要被過濾掉的
}

}

17 .獲得指定文件夾下的全部的文件

package com.qf.demo2;

import java.io.File;

/**

  • 遞歸
  • 本身調用本身
  • 以此類推
  • 同性質的問題 範圍縮小, 直到 結果 能夠直接的出來

需求: 獲得指定文件夾下的全部的文件

計算 指定文件夾 全部文件 和 文件夾的個數

*/
public class Test5 {

public static void main(String[] args) {

    findFile(new File("D:\\java上課內容"));
}

// 獲得 指定文件夾下一層的全部的文件和文件
// // 若是是文件  打印輸出, 若是文件夾 

public static void  findFile(File file){// 既能夠表明文件也能夠表明文件夾
    // 保證非空
    if(file != null){
        // 保證是文件夾
        if(!file.isFile()){
            // 獲得文件夾下的文件或者是 文件夾了
            File[] files = file.listFiles();// 新版ppt  ppt  .pptx
            for (File file2 : files) {// 把全部的文件和文件夾遍歷一遍
                    findFile(file2);// 不管是文件仍是文件夾 均可以調用  此方法
            }
        }else{
            System.out.println(file);
        }
    }else{
        System.out.println("鬧着玩呢???");
    }
}

}

1.錯誤示範1,輸出的是建立文件夾 D:\filepath\test\test.txt。

public class FileTest {    
public static void main(String[] args) throws IOException {        
String fileName = "test.txt";        
File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        
if (!testFile.exists()) {            
testFile.mkdirs();// 能建立多級目錄        
}        
System.out.println("testFile:"+testFile);   
 }}   
result--------------------testFile:D:\filepath\test\test.txt

image

2.錯誤示範2,若是 D:\filepath\test\ 文件夾不存在,會報錯。

public class FileTest {    
public static void main(String[] args) throws IOException {       
 String fileName = "test.txt";        
File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        
if (!testFile.exists()) {           
 testFile.createNewFile();// 能建立多級目錄       
 }        
System.out.println("testFile:"+testFile);    
}}

image

3.實如今多重目錄下建立文件:話很少說上正確代碼:

package com.zte.FileTest;

import sun.net.ftp.FtpClient;
//import com.zte.ums.cnms.pm.load.enums.MppFileDirEnum;
import java.io.File;
import java.io.IOException; 
public class FileTest {    
public static void main(String[] args) throws IOException {        
String fileName = "test.txt";        
System.out.println("File.separator:" + File.separator);        
File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        
File fileParent = testFile.getParentFile();
//返回的是File類型,能夠調用exsit()等方法         
String fileParentPath = testFile.getParent();
//返回的是String類型        
System.out.println("fileParent:" + fileParent);        
System.out.println("fileParentPath:" + fileParentPath);        
if (!fileParent.exists()) {            
fileParent.mkdirs();// 能建立多級目錄       
 }        
if (!testFile.exists())            
testFile.createNewFile();
//有路徑才能建立文件        
System.out.println(testFile);         
String path = testFile.getPath();        
String absolutePath = testFile.getAbsolutePath();
//獲得文件/文件夾的絕對路徑        
String getFileName = testFile.getName();
//獲得文件/文件夾的名字        
System.out.println("path:"+path);        
System.out.println("absolutePath:"+absolutePath);        System.out.println("getFileName:"+getFileName);    
}}    result---------------------------------File.separator:\fileParent:D:\filepath\testfileParentPath:D:\filepath\testD:\filepath\test\test.txtpath:D:\filepath\test\test.txtabsolutePath:D:\filepath\test\test.txtgetFileName:test.txt

File類的常見方法(參考一位大牛的,不當心把連接關了)
1.建立。
boolean createNewFile(); //建立文件
boolean mkdir();建立文件夾
boolean mkdirs();建立多級文件夾。

2.刪除。
boolean delete();
void deleteOnExit();在程序退出時刪除文件。

3.判斷。
boolean canExcute(); 判斷是否可執行
boolean exists(); 文件事是否存在。
isFile();文件
isDirectory();文件夾
isHidden();//java能獲得文件中的隱藏文件可是對隱藏文件時不能訪問的
isAbsolute();//絕對路徑即時不存在也能獲得。
4.獲取信息。
getName();
getPath();
getParent();

4.三種文件建立方式:
**File file = new File("E:/...");//文件/文件夾路徑對象
File file = new File("..." ,""...);//父目錄絕對路徑 + 子目錄名稱
File file = new File("...","...");//父目錄File對象 + 子目錄名稱**

file.exists():判斷文件/文件夾是否存在
file.delete():刪除文件/文件夾
file.isDirectory():判讀是否爲目錄
file.isFile():判讀是否爲文件夾
**file.mkdir():建立文件夾(僅限一級目錄)
file.mkdirs():建立多及目錄文件夾(包括但不限一級目錄)**
file.createNewFile():建立文件
file.getAbsolutePath():獲得文件/文件夾的絕對路徑
file.getName():獲得文件/文件夾的名字
file.String():一樣是獲得文件/文件夾的絕對路徑等於file.getAbsolutePath()
file.getParent():獲得父目錄的絕對路徑String 不能夠調用能夠調用mkdir()方法

file.getParentFile():獲得父目錄的絕對路徑的返回值是File型能夠調用mkdir()方法

String[] gdir.list():獲得目錄的子目錄\文件的名稱(不是絕對路徑)
File[] dir.listFiles():獲得目錄的子目錄\文件事是否存在。

戳我領取:Java基礎資料pdf最後的最後,爲了節省你們在網上搜索資料的時間來學習,也能夠分享給身邊好友一塊兒學習。給文章留個小贊,就能夠免費領取啦~

相關文章
相關標籤/搜索