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

使用apache 的FileUtils處理文件的復(fù)制等操作方式

 更新時間:2021年07月23日 12:09:04   作者:傻不拉幾貓  
這篇文章主要介紹了使用apache 的FileUtils處理文件的復(fù)制等操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

平時對一些文件進行操作,比如說寫文件,讀文件,復(fù)制一個文件等,使用原生File操作需要讀取源文件,生成流對象,再寫入一個新的文件中一系列過程,使用apache commons-io幫我們封裝了這些實現(xiàn),有些操作可以很容易的使用它的api來實現(xiàn)。

這里使用2.6版本,javadoc參照commons-io-2.6

1、pom依賴加入commons-io

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

2、常用API使用

2.1 獲取文件

File fileA = FileUtils.getFile(testPath + "a.txt");
// 最終路徑為入?yún)⑵唇悠饋砑磘estPath + "a.txt"
File fileAA = FileUtils.getFile(testPath, "a.txt");
// 獲取某個目錄下的文件,后面參數(shù)是拼接而成的
File fileAAA = FileUtils.getFile(new File(testPath), "a.txt");

2.2 獲取臨時目錄和用戶目錄

// 獲取臨時目錄路徑
// 每種操作系統(tǒng)有所不同,Windows一般是C:\DOCUME~1\用戶~1\LOCALS~1\Temp,Solaris一般是:/var/tmp/,Linux和Mac OS X一般是:/tmp
// Windows的java.io.tmpdir屬性值可以看環(huán)境變量->用戶變量中的TMP。
File tempDirectory = FileUtils.getTempDirectory();
String tempDirectoryPath = FileUtils.getTempDirectoryPath();
File userDirectory = FileUtils.getUserDirectory();
String userDirectoryPath = FileUtils.getUserDirectoryPath();
System.out.println(tempDirectoryPath + "  -  " + tempDirectory);
System.out.println(userDirectoryPath + "  -  " + userDirectory.getName());

2.3 創(chuàng)建文件

// 創(chuàng)建文件(實現(xiàn)與Unix上“ touch”實用程序相同的行為。它會創(chuàng)建一個大小為0的新文件,或者如果文件已經(jīng)存在,則將其打開和關(guān)閉而不進行修改,而是更新文件的日期和時間。)
File fileD = new File(testPath + "d.txt");
FileUtils.touch(fileD);

2.4 寫內(nèi)容到文件

// 寫文件
File fileB = new File(testPath + "b.txt");
if (!fileB.exists()) {
    fileB.createNewFile();
}
// 通過字節(jié)寫入文件
FileUtils.writeByteArrayToFile(fileB, "Hello, smile".getBytes());
FileUtils.writeByteArrayToFile(fileB, "Hello, sunshine".getBytes(), true);
// 通過行寫入文件(覆蓋)
FileUtils.writeLines(fileB, Lists.newArrayList("春夏秋冬, 三餐四季,只愿有你"));
// 通過行寫入文件(追加)
FileUtils.writeLines(fileB, Lists.newArrayList("春風(fēng)很柔,夏風(fēng)很烈,秋風(fēng)清爽,東風(fēng)凜冽,你就是春夏秋冬的風(fēng)"), true);
// 字符串寫入,不換行追加
FileUtils.writeStringToFile(fileB, "唯美有你", "UTF-8", true);
FileUtils.writeStringToFile(fileB, "哪里有你", Charset.defaultCharset(), true);
File fileC = new File(testPath + "c.txt");
if (!fileC.exists()) {
    fileC.createNewFile();
}
//  流操作
fileInputStream   = FileUtils.openInputStream(fileB);
//  fileOutputStream = FileUtils.openOutputStream(fileC);
fileOutputStream = FileUtils.openOutputStream(fileC, true);
// 字節(jié)數(shù)組
byte[] buffer = new byte[1024];
// 將文件內(nèi)容寫到文件中
while (fileInputStream.read(buffer) != -1) {
    fileOutputStream.write(buffer);
}

2.5 讀取文件內(nèi)容

// 按行讀取文件內(nèi)容
List list = FileUtils.readLines(fileAAA, "UTF-8");
System.out.println(list.size() > 0 ? list.get(0) : "" + list.size());
List<String> lines = FileUtils.readLines(fileB, Charset.defaultCharset());
System.out.println(lines.size() > 0 ? lines.get(0) : "" + lines.size());
// 讀取文件內(nèi)容為字節(jié)
byte[] bytes = FileUtils.readFileToByteArray(fileB);
System.out.println(new String(bytes));
// 讀取文件為String
String fileToString = FileUtils.readFileToString(fileB, "UTF-8");
System.out.println(fileToString);
String fileToString2 = FileUtils.readFileToString(fileB, Charset.defaultCharset());
System.out.println(fileToString2);

2.6 獲取目錄文件及目錄

// recursive是否遞歸查詢,這里查詢.txt文件,也可以指定其他格式的,如果extensions為null則查詢所有類型的文件
Collection<File> listFiles = FileUtils.listFiles(new File(testPath), null, true);
Collection<File> listFiles2 = FileUtils.listFiles(new File(testPath), new String[]{"txt"}, true);
// 獲取某個目錄下的所有文件 TrueFileFilter.INSTANCE表示匹配所有的
Collection<File> files1 = FileUtils.listFiles(new File(testPath), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
// 獲取某個目錄下的所有文件和文件目錄 TrueFileFilter.INSTANCE表示匹配所有的
Collection<File> files2 = FileUtils.listFilesAndDirs(new File(testPath), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);

2.7 文件內(nèi)容比較

// 文件內(nèi)容比較
boolean aa = FileUtils.contentEquals(fileA, fileAA);
boolean ab = FileUtils.contentEquals(fileA, fileB);

2.8 文件或目錄拷貝

// 文件復(fù)制,將文件A的內(nèi)容復(fù)制給文件D
FileUtils.copyFile(fileA, fileD);
// 把文件復(fù)制到某個目錄下
FileUtils.copyFileToDirectory(fileD, new File(testPath + "inner"));
// 把某個目錄拷貝到另外一個目錄
FileUtils.copyDirectoryToDirectory(new File(testPath + "inner"), new File(testPath + "other"));
// 把文件或目錄拷貝到指定目錄
FileUtils.copyToDirectory(fileB, new File(testPath + "inner"));
// 文件目錄復(fù)制
FileUtils.copyDirectory(new File(testPath + "inner"), new File(testPath + "first"));

2.9 文件或目錄刪除

// 刪除目錄
FileUtils.deleteDirectory(new File(testPath + "first"));
// 刪除文件或目錄
FileUtils.deleteQuietly(fileD);
FileUtils.deleteQuietly(new File(testPath + "first"));

這就是FileUtils工具類的一些常用操作API使用。

Github源碼參照

apache commons-io的FileUtils.copyFile簡單地復(fù)制文件

一般的方法,我們要復(fù)制一個文件,可能需要讀取源文件,生成流對象,再寫入一個新的文件中,使用apache commons-io很容就可以處理文件的復(fù)制。

下面的例子演示我們怎樣使用FileUtils.copyFile方法在同一個文件夾復(fù)制文件和使用FileUtils.copyFileToDirectory方法復(fù)制到指定的文件夾中。其中System.getProperty("java.io.tmpdir")為通過JVM讀取java.io.tmpdir屬性取得臨時文件夾,每種操作系統(tǒng)有所不同,Windows一般是C:\DOCUME~1\用戶~1\LOCALS~1\Temp,Solaris一般是:/var/tmp/,Linux和Mac OS X一般是:/tmp,Windows的java.io.tmpdir屬性值可以看環(huán)境變量->用戶變量中的TMP。

當(dāng)然我們一般使用的是絕對或相對路徑,如要復(fù)制到F:\ajava目錄中,我們只需將targetDir改成File targetDir = new File("F:\\ajava");運行后就可以看到結(jié)果。

package ajava.sample.apache;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class AjavaFileCopyExample {
       public static void main(String[] args)
       {
               // 源File對象
               File source = new File("ajava.txt");
             
               // 備份的File對象
               File target = new File("ajava-backup.txt");
             
               //通過JVM讀取java.io.tmpdir屬性取得臨時文件夾
               File targetDir = new File(System.getProperty("java.io.tmpdir"));
             
               try
               {
                       //在同一個文件夾復(fù)制文件
                       System.out.println("復(fù)制 " + source + " 文件到 " + target);
                       FileUtils.copyFile(source, target);
                     
                       // 根據(jù)指定的文件夾復(fù)制
                       System.out.println("復(fù)制 " + source + " 文件到" + targetDir + "目錄");
                       FileUtils.copyFileToDirectory(source, targetDir);
               } catch (IOException e)
               {
                       // Errors will be reported here if any error occures during copying
                       // the file
                       e.printStackTrace();
               }
       }
}

輸出結(jié)果為:

復(fù)制 ajava.txt 文件到 ajava-backup.txt

復(fù)制 ajava.txt 文件到C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp目錄

再查看對應(yīng)的文件夾,就可以發(fā)現(xiàn)備份文件。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java類初始化順序詳解

    Java類初始化順序詳解

    這篇文章主要介紹了Java類初始化順序詳解,java語言在使用過程中最先開始就是初始化,在工作中如果遇到什么問題需?要定位往往到最后也可能是初始化的問題,因此掌握初始化的順序很重要,需要的朋友可以參考下
    2023-08-08
  • 解決idea中Terminal終端無法執(zhí)行GIT命令+Terminal 中文亂碼問題

    解決idea中Terminal終端無法執(zhí)行GIT命令+Terminal 中文亂碼問題

    這篇文章主要介紹了解決idea中Terminal終端無法執(zhí)行GIT命令+Terminal 中文亂碼問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • springBoot整合redis做緩存具體操作步驟

    springBoot整合redis做緩存具體操作步驟

    緩存主要是將數(shù)據(jù)存在計算機的內(nèi)存當(dāng)中,以便于在使用的時候是可以實現(xiàn)快速讀取使用,它的快也是相對于硬盤讀取而言,這篇文章主要給大家介紹了關(guān)于springBoot整合redis做緩存的具體操作步驟,需要的朋友可以參考下
    2024-04-04
  • JavaCV攝像頭實戰(zhàn)之實現(xiàn)口罩檢測

    JavaCV攝像頭實戰(zhàn)之實現(xiàn)口罩檢測

    這篇文章主要介紹了利用JavaCV實現(xiàn)口罩檢測,功能是檢測攝像頭內(nèi)的人是否帶了口罩,把檢測結(jié)果實時標(biāo)注在預(yù)覽窗口。感興趣的可以試一試
    2022-01-01
  • 關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題

    關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題

    這篇文章主要介紹了關(guān)于bootstrap.yml和bootstrap.properties的優(yōu)先級問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot集成P6spy實現(xiàn)自定義SQL日志打印

    SpringBoot集成P6spy實現(xiàn)自定義SQL日志打印

    本文主要介紹了SpringBoot集成P6spy實現(xiàn)自定義SQL日志打印,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Docker環(huán)境下Spring Boot應(yīng)用內(nèi)存飆升分析與解決場景分析

    Docker環(huán)境下Spring Boot應(yīng)用內(nèi)存飆升分析與解決場景分析

    當(dāng)運行一個Spring Boot項目時,如果未設(shè)置JVM內(nèi)存參數(shù),Spring Boot默認(rèn)會采用JVM自身默認(rèn)的配置策略,接下來通過本文給大家介紹Docker環(huán)境下Spring Boot應(yīng)用內(nèi)存飆升分析與解決方法,需要的朋友參考下吧
    2021-08-08
  • 在項目中集成jetty server步驟解析

    在項目中集成jetty server步驟解析

    這篇文章主要介紹了在項目中集成jetty server步驟解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 詳談Java中的事件監(jiān)聽機制

    詳談Java中的事件監(jiān)聽機制

    下面小編就為大家?guī)硪黄斦凧ava中的事件監(jiān)聽機制。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Kafka中使用Avro序列化和反序列化詳解

    Kafka中使用Avro序列化和反序列化詳解

    這篇文章主要介紹了Kafka中使用Avro序列化和反序列化詳解,由于Kafka中的數(shù)據(jù)都是字節(jié)數(shù)組,在將消息發(fā)送到Kafka之前需要先將數(shù)據(jù)序列化為字節(jié)數(shù)組, 序列化器的作用就是用于序列化要發(fā)送的消息的,需要的朋友可以參考下
    2023-12-12

最新評論

砚山县| 宜宾市| 九台市| 和田县| 漳浦县| 扶沟县| 惠来县| 亚东县| 嘉善县| 东兴市| 舟曲县| 垫江县| 云梦县| 井研县| 北京市| 西平县| 多伦县| 蛟河市| 潮安县| 泰州市| 聂拉木县| 金门县| 泰州市| 酒泉市| 沧州市| 大同市| 宁陕县| 郴州市| 昭觉县| 元江| 华亭县| 炎陵县| 黄山市| 广灵县| 五寨县| 嫩江县| 云阳县| 武冈市| 从化市| 平潭县| 无为县|