日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 临时文件_在Java中使用临时文件/文件夹

發布時間:2023/12/16 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 临时文件_在Java中使用临时文件/文件夹 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java NIO.2 API提供了對使用臨時文件夾/文件的支持。例如,我們可以輕松地找到臨時文件夾/文件的默認位置,如下所示:

Java

1

String defaultBaseDir = System.getProperty("java.io.tmpdir");

通常,在Windows中,默認的臨時文件夾為 C:\Temp , %Windows%\Temp 或每個用戶所在的臨時目錄 Local Settings\Temp (此位置通常由TEMP 環境變量控制 )。

在Linux / Unix中,全局臨時目錄為 /tmp 和 /var/tmp 。前一行代碼將返回默認位置,具體取決于操作系統。接下來,我們將學習如何創建一個臨時文件夾/文件。

創建一個臨時文件夾/文件

創建臨時文件夾可以使用以下方法完成:

· Path createTempDirectory (Path dir, String prefix, FileAttribute>... attrs)

這是類中的一種 static方法 Files ,可以按如下方式使用:

· 讓我們在操作系統的默認位置創建一個沒有前綴的臨時文件夾:

Java

1

// C:\Users\Anghel\AppData\Local\Temp\8083202661590940905

2

Path tmpNoPrefix = Files.createTempDirectory(null);

讓我們在操作系統的默認位置創建一個帶有自定義前綴的臨時文件夾:

Java

1

// C:\Users\Anghel\AppData\Local\Temp\logs_5825861687219258744

2

String customDirPrefix = "logs_";

3

Path tmpCustomPrefix = Files.createTempDirectory(customDirPrefix);

讓我們在帶有自定義前綴的自定義位置中創建一個臨時文件夾:

Java

1

// D:\tmp\logs_10153083118282372419

2

Path customBaseDir = FileSystems.getDefault().getPath("D:/tmp");

3

String customDirPrefix = "logs_";

4

Path tmpCustomLocationAndPrefix = Files.createTempDirectory(customBaseDir, customDirPrefix);

創建臨時文件可以通過以下方式完成:

· Path createTempFile (Path dir, String prefix, String suffix, FileAttribute>... attrs

這是類中的一種static方法Files ,可以按如下方式使用:

· 讓我們在操作系統的默認位置創建一個沒有前綴和后綴的臨時文件:

Java

1

// C:\Users\Anghel\AppData\Local\Temp\16106384687161465188.tmp

2

Path tmpNoPrefixSuffix = Files.createTempFile(null, null);

讓我們在操作系統的默認位置創建一個帶有自定義前綴和后綴的臨時文件:

Java

1

// C:\Users\Anghel\AppData\Local\Temp\log_402507375350226.txt

2

String customFilePrefix = "log_";

3

String customFileSuffix = ".txt";

4

Path tmpCustomPrefixAndSuffix = Files.createTempFile(customFilePrefix, customFileSuffix);

讓我們在帶有自定義前綴和后綴的自定義位置中創建一個臨時文件:

Java

1

// D:\tmp\log_13299365648984256372.txt

2

Path customBaseDir = FileSystems.getDefault().getPath("D:/tmp");

3

String customFilePrefix = "log_";

4

String customFileSuffix = ".txt";

5

Path tmpCustomLocationPrefixSuffix

6

= Files.createTempFile(customBaseDir, customFilePrefix, customFileSuffix);

接下來,我們將研究刪除臨時文件夾/文件的不同方法。

通過關機掛鉤刪除臨時文件夾/文件

刪除臨時文件夾/文件是可以由操作系統或專用工具完成的任務。但是,有時,我們需要以編程方式進行控制,并基于不同的設計考慮因素刪除文件夾/文件。

該問題的解決方案依賴于可通過該方法實現的關機掛鉤機制 Runtime.getRuntime().addShutdownHook() 。每當我們需要在JVM關閉之前立即完成某些任務(例如,清理任務)時,此機制就很有用。它作為Java線程實現,run() 當JVM在關閉時執行shutdown-hook時,將調用其 方法。如下代碼所示:

Java

1

Path customBaseDir = FileSystems.getDefault().getPath("D:/tmp");

2

String customDirPrefix = "logs_";

3

String customFilePrefix = "log_";

4

String customFileSuffix = ".txt";

5

6

try {

7

Path tmpDir = Files.createTempDirectory(customBaseDir, customDirPrefix);

8

Path tmpFile1 = Files.createTempFile(tmpDir, customFilePrefix, customFileSuffix);

9

Path tmpFile2 = Files.createTempFile(tmpDir, customFilePrefix, customFileSuffix);

10

11

Runtime.getRuntime().addShutdownHook(new Thread() {

12

13

@Override

14

public void run() {

15

try (DirectoryStream ds = Files.newDirectoryStream(tmpDir)) {

16

for (Path file: ds) {

17

Files.delete(file);

18

}

19

20

Files.delete(tmpDir);

21

} catch (IOException e) {

22

...

23

}

24

}

25

});

26

27

//simulate some operations with temp file until delete it

28

Thread.sleep(10000);

29

} catch (IOException | InterruptedException e) {

30

...

31

}

通過deleteOnExit()刪除臨時文件夾/文件

刪除臨時文件夾/文件的另一種解決方案依賴于該 File.deleteOnExit()方法。通過調用此方法,我們可以注冊刪除文件夾/文件。JVM關閉時,將執行刪除操作:

Java

1

Path customBaseDir = FileSystems.getDefault().getPath("D:/tmp");

2

String customDirPrefix = "logs_";

3

String customFilePrefix = "log_";

4

String customFileSuffix = ".txt";

5

6

try {

7

Path tmpDir = Files.createTempDirectory(customBaseDir, customDirPrefix);

8

System.out.println("Created temp folder as: " + tmpDir);

9

Path tmpFile1 = Files.createTempFile(tmpDir, customFilePrefix, customFileSuffix);

10

Path tmpFile2 = Files.createTempFile(tmpDir, customFilePrefix, customFileSuffix);

11

12

try (DirectoryStream ds = Files.newDirectoryStream(tmpDir)) {

13

tmpDir.toFile().deleteOnExit();

14

15

for (Path file: ds) {

16

file.toFile().deleteOnExit();

17

}

18

} catch (IOException e) {

19

...

20

}

21

22

// simulate some operations with temp file until delete it

23

Thread.sleep(10000);

24

} catch (IOException | InterruptedException e) {

25

...

26

}

通過DELETE_ON_CLOSE刪除臨時文件

刪除臨時文件所依賴的另一個解決方案 StandardOpenOption.DELETE_ON_CLOSE (在關閉流時刪除該文件)。例如,下面的代碼段通過createTempFile() 方法創建一個臨時文件,并為該文件打開一個DELETE_ON_CLOSE 顯式指定的緩沖寫流:

Java

1

Path customBaseDir = FileSystems.getDefault().getPath("D:/tmp");

2

String customFilePrefix = "log_";

3

String customFileSuffix = ".txt";

4

Path tmpFile = null;

5

6

try {

7

tmpFile = Files.createTempFile(

8

customBaseDir, customFilePrefix, customFileSuffix);

9

} catch (IOException e) {

10

...

11

}

12

13

try (BufferedWriter bw = Files.newBufferedWriter(tmpFile,

14

StandardCharsets.UTF_8, StandardOpenOption.DELETE_ON_CLOSE)) {

15

16

//simulate some operations with temp file until delete it

17

Thread.sleep(10000);

18

} catch (IOException | InterruptedException e) {

19

...

20

}

最后,開發這么多年我也總結了一套學習Java的資料與面試題,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯系方式,有時間記得幫我點下轉發讓跟多的人看到哦。

總結

以上是生活随笔為你收集整理的java 临时文件_在Java中使用临时文件/文件夹的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。