欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?Io?File文件操作基礎教程

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

File 類概述

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

  • 檢測文件是否存在
  • 讀取文件長度
  • 重命名或移動文件
  • 刪除文件
  • 檢測某個路徑是文件還是目錄
  • 讀取目錄中的文件列表

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

路徑問題:

  • 絕對路徑:從盤符開始的路徑,這是一個完整的路徑。如:E:\a.txt
  • 相對路徑:相當于項目目錄的路徑,這個一個便捷的路徑。如:…/a.txt

注意:

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

File對象文件操作

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

演示代碼

File f=new File("path");
if (f.exists()) {
    System.out.println(f.getName() + "的屬性如下: 文件長度為:" + 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();

獲取當前環(huán)境的路徑符號

String separator = File.separator;

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

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

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

獲取各種路徑

在操作文件的時候難免會遇到,獲取文件路徑的問題下面提供幾種獲取文件路徑的辦法不同的架構獲取的方式也不同

路徑整合

將多個路徑整合Paths.get() 自動適配路徑符

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目錄

在不在服務器中 那么就是當前項目的根路徑
如果在服務器那么就是Tomcat中bin目錄

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

常用功能

創(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("新建目錄操作出錯");
    e.printStackTrace();
}

創(chuàng)建文件

File myFilePath = new File("path_file");
try {
    if (!myFilePath.exists()) {
        myFilePath.createNewFile();
    }
}
catch (Exception e) {
    System.out.println("新建文件操作出錯");
    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("是目錄");
    }

判斷是否是絕對路徑

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

判斷是否是隱藏文件

也就是是文件名是.開頭的 或者是手動將文件設置為隱藏文件

那么他就是隱藏文件

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

刪除文件或者整個文件夾

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

public  static boolean delDirectoryAndFileAll(String path){
        File delfile = new File(path);
        if (!delfile.exists()) {
            System.out.println("要刪除的文件或目錄不存在");
            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;
        }
        //獲取當前目錄文件集合
        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());
            }
        }
    }

提取文件后綴

不加點比如 txt js png

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

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

/**
     *計算 當前時間和 文件創(chuàng)建時間 差
     * @param file  傳入的文件
     * @param num   1.選擇時間差毫秒  2.選擇時間差天數(shù)
     * @return  返回時間差
     */
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:
            // 獲得兩個時間的毫秒時間差異
            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);
    }

文件和文件夾進行按需排序

package org.app.test;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
//缺點就是不能直接對 盤符進行 掃描 比如C:\\  或者F:\\       只能針對某個文件夾
public class Dir_File_List {
    private List<File>   folder_list=new ArrayList<>();//文件夾
    private List<File> file_list=new ArrayList<>();//文件
    //排序  規(guī)則
    //文件夾 按照名稱 排序 從短到長
    private   boolean dir_name=false;
    //文件夾 按照大小 排序 從小到大
    private  boolean dir_size=false;
    //文件夾創(chuàng)建時間  排序  從 最近到最遠
    private  boolean dir_time=true;
    //文件 按照名稱  排序 從短到長
    private  boolean  file_name=false;
    //文件 按照大小  排序 從小到大
    private   boolean file_size=false;
    //文件創(chuàng)建時間  排序  從 最近到最遠
    private  boolean file_time=true;
    //可以同時多開 排序規(guī)則  不會沖突
    
    // 是否判 包括子文件
    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) {
            //文件夾按文件名稱的長度 顯示的順序:  從短到 長
            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) {
            //按文件名稱的長度 顯示的順序:  從短到 長
            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)建時間 排序 從近到遠
            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)建時間
     * @param file_name  文件名稱排序
     * @param file_size  文件大小
     * @param file_time   文件創(chuàng)建時間
     */
    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ī)則進行排序
    public static void main(String[] args) {
        Dir_File_List list=new Dir_File_List();
        String path = "C:\\Users\\12841\\Desktop\\Docker";
        //如何 排序 自己根據構造來 修改
        boolean px=false; //開啟排序
        list.dir_file_list(path,px);
        System.out.println("所有的文件夾" + list.getFolder_list()); //排序規(guī)則:  創(chuàng)建時間  排序  從 最近到最遠
        System.out.println("所有的文件" + list.getFile_list()); //排序規(guī)則了:   創(chuàng)建時間  排序  從 最近到最遠
    }
}

文件隨機名稱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隨機數(shù)
    StringBuilder time=new StringBuilder();
    time.append(num1+"-");//隨機數(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));//時
    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隨機數(shù)
    time.append(num);//隨機數(shù)
    return time.toString();
}

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

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

相關文章

  • 詳解java倒計時三種簡單實現(xiàn)方式

    詳解java倒計時三種簡單實現(xiàn)方式

    這篇文章主要介紹了詳解java倒計時三種簡單實現(xiàn)方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • SpringBoot 使用 @Value 注解讀取配置文件給靜態(tài)變量賦值

    SpringBoot 使用 @Value 注解讀取配置文件給靜態(tài)變量賦值

    這篇文章主要介紹了SpringBoot 使用 @Value 注解讀取配置文件給靜態(tài)變量賦值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • HashSet工作原理_動力節(jié)點Java學院整理

    HashSet工作原理_動力節(jié)點Java學院整理

    HashSet 底層采用 HashMap 來保存所有元素,因此 HashSet 的實現(xiàn)比較簡單。接下來通過本文給大家介紹HashSet工作原理_動力節(jié)點Java學院整理,需要的朋友可以參考下
    2017-04-04
  • Dependency ‘XXX:‘ not found問題的三步解決

    Dependency ‘XXX:‘ not found問題的三步解決

    這篇文章主要介紹了Dependency ‘XXX:‘ not found問題的三步解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring Cloud Hystrix 服務容錯保護的原理實現(xiàn)

    Spring Cloud Hystrix 服務容錯保護的原理實現(xiàn)

    這篇文章主要介紹了Spring Cloud Hystrix 服務容錯保護的原理實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Java8新特性Lambda表達式的一些復雜用法總結

    Java8新特性Lambda表達式的一些復雜用法總結

    lambda表達式是JAVA8中提供的一種新的特性,它支持Java也能進行簡單的“函數(shù)式編程”。 下面這篇文章主要給大家介紹了關于Java8新特性Lambda表達式的一些復雜用法的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • SpringMVC之返回JSON的三種方式

    SpringMVC之返回JSON的三種方式

    現(xiàn)在都是前后端分離了,后端只需要跟前端提供restful接口,所有接口都返回json格式數(shù)據即可,SpringMVC通常有3種方式向前端輸出json格式數(shù)據,下面我們就來了解一下
    2023-06-06
  • Spring activiti如何實現(xiàn)指定任務處理者

    Spring activiti如何實現(xiàn)指定任務處理者

    這篇文章主要介紹了Spring activiti如何實現(xiàn)指定任務處理者,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 如何開發(fā)一個簡單的Akka Java應用

    如何開發(fā)一個簡單的Akka Java應用

    這篇文章主要介紹了如何開發(fā)一個簡單的Akka Java應用 ,幫助大家使用Java創(chuàng)建Akka項目并將其打包,感興趣的朋友可以了解下
    2020-10-10
  • java使用RSA工具進行信息加解密

    java使用RSA工具進行信息加解密

    我們在開發(fā)中需要對用戶敏感數(shù)據進行加解密,比如密碼等信息,這篇文章主要為大家詳細介紹了java如何使用RSA工具進行信息加解密,感興趣的小伙伴可以了解下
    2023-12-12

最新評論