最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?Io?File文件操作基礎(chǔ)教程

 更新時(shí)間:2022年05月05日 10:31:28   作者:胡安民  
這篇文章主要介紹了Java?Io?File文件操作,在這里需要注意File只能訪問文件以及文件系統(tǒng)的元數(shù)據(jù)。如果你想讀寫文件內(nèi)容,需要使用FileInputStream、FileOutputStream或者RandomAccessFile,需要的朋友可以參考下

File 類概述

Java IO API中的FIle類可以讓你訪問底層文件系統(tǒng),通過File類,你可以做到以下幾點(diǎn):

  • 檢測(cè)文件是否存在
  • 讀取文件長(zhǎng)度
  • 重命名或移動(dòng)文件
  • 刪除文件
  • 檢測(cè)某個(gè)路徑是文件還是目錄
  • 讀取目錄中的文件列表

請(qǐng)注意: File只能訪問文件以及文件系統(tǒng)的元數(shù)據(jù)。如果你想讀寫文件內(nèi)容,需要使用FileInputStream、FileOutputStream或者RandomAccessFile。

路徑問題:

  • 絕對(duì)路徑:從盤符開始的路徑,這是一個(gè)完整的路徑。如:E:\a.txt
  • 相對(duì)路徑:相當(dāng)于項(xiàng)目目錄的路徑,這個(gè)一個(gè)便捷的路徑。如:…/a.txt

注意:

  • 路徑不區(qū)分大小寫
  • 路徑中的文件名稱分隔符 window 使用反斜杠\
  • 其他的平臺(tái)都使用斜杠作為分隔符/。
  • window 的路徑分隔符使用\,而Java程序中的\表示轉(zhuǎn)義字符,所以在java中需要使用\\或者直接使用File.separator常量值表示。

File對(duì)象文件操作

方法簡(jiǎn)介
boolean exists()判斷文件和目錄是否存在
boolean isFile()判斷是否是文件
boolean isDirectory()判斷是否是目錄
String getPath()返回當(dāng)前路徑
String getAbsolutePath()返回此對(duì)象的絕對(duì)路徑
String getName返回文件名稱
String getParent()返回路徑的上一個(gè)層路徑
long length返回文件的長(zhǎng)度,單位為 字節(jié)1024=1KB
String[] list();查看當(dāng)前目錄下第一層的所有文件和文件夾名稱 ,字符串?dāng)?shù)組
File[] listFile();返回當(dāng)前目錄下第一層所有文件和文件夾的File數(shù)組對(duì)象
CreateNewFile()創(chuàng)建文件,
mkdir()創(chuàng)建目錄只能創(chuàng)建一層
mkdirs()創(chuàng)建多層目錄
delete()刪除文件或者文件夾 刪除的文件夾必須是空的一次只能刪除一層
lastModified()獲取文件最后創(chuàng)建時(shí)間
canRead()獲取文件是否可讀
canWrite()獲取文件是否可寫
oldFile.renameTo(new File( newFileName));修改文件或者目錄名稱
file.setWritable(false);設(shè)置文件為只讀

演示代碼

File f=new File("path");
if (f.exists()) {
    System.out.println(f.getName() + "的屬性如下: 文件長(zhǎng)度為:" + f.length()+"字節(jié)");
    System.out.println(f.isFile() ? "是文件" : "不是文件");
    System.out.println(f.isDirectory() ? "是目錄" : "不是目錄");
    System.out.println(f.canRead() ? "可讀取" : "不");
    System.out.println(f.isHidden() ? "是隱藏文件" : "不是隱藏文件");
    System.out.println("文件夾的最后修改日期為:" + new Date(f.lastModified()));
}

File靜態(tài)方法

獲取根目錄 (linux就只有/)

File[] files = File.listRoots();

獲取當(dāng)前環(huán)境的路徑符號(hào)

String separator = File.separator;

創(chuàng)建臨時(shí)文件,并返回臨時(shí)文件的FIle對(duì)象,

在window系統(tǒng)中臨時(shí)文件目錄: C:\Windows\Temp
在linux系統(tǒng)中臨時(shí)文件目錄: /tmp 或/var/tmp

File test = File.createTempFile("test", ".tmp");

獲取各種路徑

在操作文件的時(shí)候難免會(huì)遇到,獲取文件路徑的問題下面提供幾種獲取文件路徑的辦法不同的架構(gòu)獲取的方式也不同

路徑整合

將多個(gè)路徑整合Paths.get() 自動(dòng)適配路徑符

String pat1="C:\\Users\\";
String pat="/aaaa/aaa/a";
String string = Paths.get(pat1, pat).toString();
System.out.println(string);//C:\Users\aaaa\aaa\a

獲取classpath路徑 (常用)

列: E:\porject\java-utils\common-utils\target\[test-classes或classes] 而classes目錄等于resources目錄

方案1:

String path = Paths.get(ResourceUtils.getURL("classpath:").getPath().substring(1)).toString();
      System.out.println(path);
      URL resource = Class.class.getResource("/");
      String path1 = Paths.get(resource.getPath().substring(1)).toString();
      System.out.println(path1);

獲取Tomcat的bin目錄

在不在服務(wù)器中 那么就是當(dāng)前項(xiàng)目的根路徑
如果在服務(wù)器那么就是Tomcat中bin目錄

System.getProperty("user.dir") (會(huì)變化的)

常用功能

創(chuàng)建目錄

mkdir():只能創(chuàng)建一層目錄. mkdirs(): 可以創(chuàng)建多層目錄

File myFolderPath = new File("pathdir");
try {
    if (!myFolderPath.exists()) {
        myFolderPath.mkdir();
    }
}
catch (Exception e) {
    System.out.println("新建目錄操作出錯(cuò)");
    e.printStackTrace();
}

創(chuàng)建文件

File myFilePath = new File("path_file");
try {
    if (!myFilePath.exists()) {
        myFilePath.createNewFile();
    }
}
catch (Exception e) {
    System.out.println("新建文件操作出錯(cuò)");
    e.printStackTrace();
}

判斷文件或文件夾是否存在

都是使用 exists()
比如文件是否存在: c:xxxx/xx/a.txt
比如目錄是否存在: c:xxxx/xx/

File str1 = new File("path");
if (str1.exists()) {
    System.out.println("存在");
}

判斷是文件還是文件夾

File str1=new File("path");
    if(str1.isFile()){
        System.out.println("是文件");
    }
    if(str1.isDirectory()){
        System.out.println("是目錄");
    }

判斷是否是絕對(duì)路徑

public  static boolean isAbsolute( String file){
      File file1=new File(file);
      return file1.isAbsolute();
  }

判斷是否是隱藏文件

也就是是文件名是.開頭的 或者是手動(dòng)將文件設(shè)置為隱藏文件

那么他就是隱藏文件

 public static boolean isHidden( String file){
      File file1=new File(file);
      return file1.isHidden();
  }

刪除文件或者整個(gè)文件夾

包括文件夾下的子文件夾以及文件全部刪除

public  static boolean delDirectoryAndFileAll(String path){
        File delfile = new File(path);
        if (!delfile.exists()) {
            System.out.println("要?jiǎng)h除的文件或目錄不存在");
            return false;
        }
        File[] files=delfile.listFiles();
        if (files!=null){
            int length = files.length;
            for(int i=0;i<length;i++){
                if (files[i].isDirectory()){
                    delDirectoryAndFileAll(files[i].getPath());
                }
                files[i].delete();
            }
        }

        //將path也一起刪除
        delfile.delete();
        return true;
    }

讀取指定目錄下全部文件

 //獲取指定路徑下所有文件
    public static List<String> getFiles(String path) {
        List<String> list = new ArrayList<>();
        getFiles(path, list);
        return list;
    }
    private static void getFiles(String path, List<String> list) {
        File file = new File(path);
        if (!file.exists()) {
            System.out.println("文件目錄不存在");
            return;
        }
        //獲取當(dāng)前目錄文件集合
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {//判斷是否是目錄
                getFiles(files[i].getPath(),list);
            } else {
                list.add(files[i].getAbsolutePath());
            }
        }
    }

提取文件后綴

不加點(diǎn)比如 txt js png

public static String   suffix( String file){
      File str1=new File(file);
		//提取擴(kuò)展名
      String str2=str1.getPath().substring(str1.getPath().lastIndexOf(".")+1);
       return str2;
  }

獲取當(dāng)前時(shí)間和文件創(chuàng)建時(shí)間差

/**
     *計(jì)算 當(dāng)前時(shí)間和 文件創(chuàng)建時(shí)間 差
     * @param file  傳入的文件
     * @param num   1.選擇時(shí)間差毫秒  2.選擇時(shí)間差天數(shù)
     * @return  返回時(shí)間差
     */
public long dateFile(String file,int num){
        File file1=new File(file);
    long nd = 1000 * 24 * 60 * 60;
    long  diff=new Date().getTime() - new Date(file1.lastModified()).getTime();
    switch (num){
        case 1:
            // 獲得兩個(gè)時(shí)間的毫秒時(shí)間差異
            return  diff;
        case 2:
            return diff / nd;
        default:
            return  diff;
    }
}
    @Test
    public  void show()  {
        String path="文件";
        long l = dateFile(path, 2);
        System.out.println(l);
    }

文件和文件夾進(jìn)行按需排序

package org.app.test;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
//缺點(diǎn)就是不能直接對(duì) 盤符進(jìn)行 掃描 比如C:\\  或者F:\\       只能針對(duì)某個(gè)文件夾
public class Dir_File_List {
    private List<File>   folder_list=new ArrayList<>();//文件夾
    private List<File> file_list=new ArrayList<>();//文件
    //排序  規(guī)則
    //文件夾 按照名稱 排序 從短到長(zhǎng)
    private   boolean dir_name=false;
    //文件夾 按照大小 排序 從小到大
    private  boolean dir_size=false;
    //文件夾創(chuàng)建時(shí)間  排序  從 最近到最遠(yuǎn)
    private  boolean dir_time=true;
    //文件 按照名稱  排序 從短到長(zhǎng)
    private  boolean  file_name=false;
    //文件 按照大小  排序 從小到大
    private   boolean file_size=false;
    //文件創(chuàng)建時(shí)間  排序  從 最近到最遠(yuǎn)
    private  boolean file_time=true;
    //可以同時(shí)多開 排序規(guī)則  不會(huì)沖突
    
    // 是否判 包括子文件
    Boolean  pddirZi=true;
    public  void  pathFile(String path){
        File file=new File(path);
        if (!file.exists()){
            System.out.println("找不到路徑");
            return;
        }
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isDirectory()){
                folder_list.add(file1);
                if(pddirZi){
                    pathFile(file1.getPath());
                }
            }
            if (file1.isFile()){
                file_list.add(file1);
            }
        }
    }
    public  void  compare_lis() {
        if (dir_name) {
            //文件夾按文件名稱的長(zhǎng)度 顯示的順序:  從短到 長(zhǎng)
            Collections.sort(folder_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (o11.getName().length() - o22.getName().length());
                }
            });
        }
        if (file_name) {
            //按文件名稱的長(zhǎng)度 顯示的順序:  從短到 長(zhǎng)
            Collections.sort(file_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (o11.getName().length() - o22.getName().length());
                }
            });
        }
        if (dir_size) {
            //按照文件夾大小 再次排序  最大的文件 放在最后
            Collections.sort(folder_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (int) (o11.length() - o22.length());
                }
            });
        }
        if (file_size) {
            //按照文件大小 再次排序  最大的文件 放在最后
            Collections.sort(file_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (int) (o11.length() - o22.length());
                }
            });
        }
        if (dir_time) {
            //然后文件夾創(chuàng)建時(shí)間 排序 從近到遠(yuǎn)
            Collections.sort(folder_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (int) ( o22.lastModified()-o11.lastModified());
                }
            });
        }
        if(file_time){
            //然后文件大小 再次排序  最大的文件 放在最后
            Collections.sort(file_list, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    File o11 = (File) o1;
                    File o22 = (File) o2;
                    return (int) ( o22.lastModified()-o11.lastModified());
                }
            });
        }
    }
    public void dir_file_list(String path,boolean px){
        pathFile(path);
        if (px){
            compare_lis();//排序
        }
    }
    public List<File> getFolder_list() {
        return folder_list;
    }
    public List<File> getFile_list() {
        return file_list;
    }
    public Dir_File_List() {
    }
    /**
     *
     * @param dir_name   文件夾名稱排序
     * @param dir_size   文件夾大小
     * @param dir_time  文件夾創(chuàng)建時(shí)間
     * @param file_name  文件名稱排序
     * @param file_size  文件大小
     * @param file_time   文件創(chuàng)建時(shí)間
     */
    public Dir_File_List(boolean dir_name, boolean dir_size, boolean dir_time, boolean file_name, boolean file_size, boolean file_time) {
        this.dir_name = dir_name;
        this.dir_size = dir_size;
        this.dir_time = dir_time;
        this.file_name = file_name;
        this.file_size = file_size;
        this.file_time = file_time;
    }
    //查看C盤中指定路徑下所有的文件和文件夾名稱,并且指定排序規(guī)則進(jìn)行排序
    public static void main(String[] args) {
        Dir_File_List list=new Dir_File_List();
        String path = "C:\\Users\\12841\\Desktop\\Docker";
        //如何 排序 自己根據(jù)構(gòu)造來 修改
        boolean px=false; //開啟排序
        list.dir_file_list(path,px);
        System.out.println("所有的文件夾" + list.getFolder_list()); //排序規(guī)則:  創(chuàng)建時(shí)間  排序  從 最近到最遠(yuǎn)
        System.out.println("所有的文件" + list.getFile_list()); //排序規(guī)則了:   創(chuàng)建時(shí)間  排序  從 最近到最遠(yuǎn)
    }
}

文件隨機(jī)名稱28-34位

public static String Name_tuP(){
    char[] ch={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    char[] Ch={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    Calendar cal = Calendar.getInstance();
    Random sun=new Random();

    int num1=sun.nextInt(1000);//0-1000隨機(jī)數(shù)
    StringBuilder time=new StringBuilder();
    time.append(num1+"-");//隨機(jī)數(shù)
    time.append(cal.get(Calendar.YEAR)); //年
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.MONTH) + 1);//月
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.DAY_OF_MONTH));//日
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.HOUR_OF_DAY));//時(shí)
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.MINUTE));//分
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]);
    time.append(cal.get(Calendar.SECOND));//秒
    time.append(ch[sun.nextInt(ch.length)]);
    time.append(Ch[sun.nextInt(ch.length)]+"-");
    int num=sun.nextInt(1000);//0-1000隨機(jī)數(shù)
    time.append(num);//隨機(jī)數(shù)
    return time.toString();
}

類似于這種格式 : 833-2020mR6pK7sN17zT54zE56aH-229 2020年 6月 7日 17點(diǎn) 54 分 56 秒

到此這篇關(guān)于Java Io File文件操作的文章就介紹到這了,更多相關(guān)Java Io File操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決在SpringBoot中使用@Value取不到值的問題

    解決在SpringBoot中使用@Value取不到值的問題

    這篇文章主要給大家分享解決在SpringBoot中使用@Value取不到值的問題,文中有詳細(xì)的解決代碼供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java求余%操作引發(fā)的一連串故事

    Java求余%操作引發(fā)的一連串故事

    取模運(yùn)算與取余運(yùn)算兩個(gè)概念有重疊的部分但又不完全一致。主要的區(qū)別在于對(duì)負(fù)整數(shù)進(jìn)行除法運(yùn)算時(shí)操作不同。本文重點(diǎn)給大家介紹Java求余%操作引發(fā)的一連串故事,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • java中isEmpty和isBlank的區(qū)別小結(jié)

    java中isEmpty和isBlank的區(qū)別小結(jié)

    Java中的isEmpty和isBlank都是用來判斷字符串是否為空的方法,但在不同的情況下有所區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • java?-jar啟動(dòng)參數(shù)設(shè)置file.encoding編碼,解決中文亂碼的問題

    java?-jar啟動(dòng)參數(shù)設(shè)置file.encoding編碼,解決中文亂碼的問題

    這篇文章主要介紹了java?-jar啟動(dòng)參數(shù)設(shè)置file.encoding編碼,解決中文亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mybatis-plus 擴(kuò)展批量新增的實(shí)現(xiàn)

    mybatis-plus 擴(kuò)展批量新增的實(shí)現(xiàn)

    本文主要介紹了mybatis-plus 擴(kuò)展批量新增的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • SpringBoot如何使用MyBatis-Plus實(shí)現(xiàn)高效的數(shù)據(jù)訪問層

    SpringBoot如何使用MyBatis-Plus實(shí)現(xiàn)高效的數(shù)據(jù)訪問層

    在開發(fā) Spring Boot 應(yīng)用時(shí),數(shù)據(jù)訪問是不可或缺的部分,本文將詳細(xì)介紹如何在 Spring Boot 中使用 MyBatis-Plus,并結(jié)合具體代碼示例來講解它的使用方法和常見配置,希望對(duì)大家有一定的幫助
    2025-04-04
  • 使用mybatis的@Interceptor實(shí)現(xiàn)攔截sql的方法詳解

    使用mybatis的@Interceptor實(shí)現(xiàn)攔截sql的方法詳解

    攔截器是一種基于 AOP(面向切面編程)的技術(shù),它可以在目標(biāo)對(duì)象的方法執(zhí)行前后插入自定義的邏輯,本文給大家介紹了使用mybatis的@Interceptor實(shí)現(xiàn)攔截sql的方法,需要的朋友可以參考下
    2024-03-03
  • Springboot實(shí)現(xiàn)獲取實(shí)時(shí)天氣

    Springboot實(shí)現(xiàn)獲取實(shí)時(shí)天氣

    這篇文章主要為大家詳細(xì)介紹了如何使用Springboot實(shí)現(xiàn)獲取實(shí)時(shí)天氣功能,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • Spring?Boot中的max-http-header-size配置方式

    Spring?Boot中的max-http-header-size配置方式

    這篇文章主要介紹了Spring?Boot中的max-http-header-size配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 基于openeuler的DataGear部署文檔

    基于openeuler的DataGear部署文檔

    本文詳細(xì)介紹了如何在openEuler操作系統(tǒng)上安裝和配置JDK以及DataGear,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-03-03

最新評(píng)論

长汀县| 保德县| 若尔盖县| 竹山县| 博客| 汉寿县| 布拖县| 麻栗坡县| 长寿区| 洛川县| 常熟市| 沂源县| 新巴尔虎左旗| 沾化县| 乐昌市| 张掖市| 大化| 朝阳市| 日土县| 错那县| 涡阳县| 洪洞县| 诏安县| 平陆县| 彭泽县| 新平| 太康县| 龙海市| 荆州市| 萨迦县| 酒泉市| 确山县| 南雄市| 理塘县| 嵊州市| 什邡市| 平武县| 深圳市| 禹城市| 郧西县| 庄河市|