使用Java7的Files工具類(lèi)和Path接口來(lái)訪(fǎng)問(wèn)文件的方法
在日期的java版本中,都是通過(guò)File類(lèi)來(lái)訪(fǎng)問(wèn)文件,但是File類(lèi)的操作有限,不能利用特定文件系統(tǒng)的特性,性能也不高。在訪(fǎng)問(wèn)出錯(cuò)時(shí),很多都是直接返回false,并沒(méi)有給出異常信息。因此Java7新增了Files和Paths兩個(gè)工具類(lèi)來(lái)操作文件。Files類(lèi)中包含了大量的靜態(tài)方法來(lái)操作文件。Java7還引入了一個(gè)Path接口,它代表的是與平臺(tái)無(wú)關(guān)的平臺(tái)路徑,關(guān)于它的用法,下面會(huì)做詳細(xì)的介紹。
Paths提供了兩個(gè)方法用來(lái)獲取Path對(duì)象,
1、get(URL url)
2、get(String first,String… more),這是一個(gè)將多個(gè)字符串拼接成一個(gè)路徑的方法
下面是測(cè)試的代碼
package com.sdjz.test1;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class FilesTest {
public static void main(String[] args) throws FileNotFoundException, IOException {
Path path = Paths.get("d:", "test.txt");
// 得到path的絕對(duì)路徑
System.out.println(path.toAbsolutePath());
// 復(fù)制文件
Files.copy(Paths.get("d:", "test.txt"), new FileOutputStream("text1.txt"));
// 將讀取到的內(nèi)容添加List集合中
List<String> lists = Files.readAllLines(Paths.get("d:", "est.java"));
System.out.println("讀取到的文件:" + lists);
System.out.println("是否可寫(xiě)? --->" + Files.isWritable(Paths.get("d:", "test.txt")));
// 創(chuàng)建一個(gè)集合,用于添加到文件中
List<String> list = new ArrayList<>();
list.add("adsf");
list.add("測(cè)試1");
list.add("測(cè)試2");
// 將多個(gè)字符串寫(xiě)入到文件中
Files.write(Paths.get("d:", "test.txt"), list, Charset.forName("gbk"));
// 判斷指定文件的大小
System.out.println("test.txt文件的大小為:" + Files.size(Paths.get("d:", "test.txt")));
// 判斷是否為隱藏文件
System.out.println("test.txt是否為隱藏文件 ?" + Files.isHidden(Paths.get("d:", "test.txt")));
// 得到一個(gè)Calendar實(shí)例,用于設(shè)置文件修改的時(shí)間
Calendar ca = Calendar.getInstance();
// 設(shè)置時(shí)間為2014年5月23日
ca.set(2014, 4, 23);
// 設(shè)置文件最后修改的時(shí)間
Files.setLastModifiedTime(path, FileTime.fromMillis(ca.getTimeInMillis()));
}
}
運(yùn)行上面的程序,這會(huì)看到如下的結(jié)果

下面是修改之后的文件修改時(shí)間的屬性

以上這篇使用Java7的Files工具類(lèi)和Path接口來(lái)訪(fǎng)問(wèn)文件的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于SpringBoot大文件RestTemplate下載解決方案
這篇文章主要介紹了SpringBoot大文件RestTemplate下載解決方案,最近結(jié)合網(wǎng)上案例及自己總結(jié),寫(xiě)了一個(gè)分片下載tuling/fileServer項(xiàng)目,需要的朋友可以參考下2021-10-10
IntelliJ?IDEA?2022安裝注冊(cè)永久激活
java開(kāi)發(fā)工具IntelliJ?IDEA深受用戶(hù)喜愛(ài),很多朋友對(duì)這個(gè)idea開(kāi)發(fā)工具比較忠心,一旦有新版本發(fā)出,很多小伙伴就迫不及待的想更新,今天小編給大家?guī)?lái)了idea2022.1最新永久激活碼,親測(cè)有效,喜歡的朋友快來(lái)下載體驗(yàn)吧2022-08-08
JavaEE SpringMVC 請(qǐng)求傳參的示例詳解
這篇文章詳細(xì)介紹了SpringMVC中請(qǐng)求參數(shù)的傳遞和接收方式,包括傳遞單個(gè)參數(shù)、多個(gè)參數(shù)、對(duì)象參數(shù)、數(shù)組參數(shù)、集合參數(shù)以及JSON數(shù)據(jù)的傳遞和處理,感興趣的朋友一起看看吧2025-02-02
Java?Mybatis?foreach嵌套foreach?List<list<Object>&
在MyBatis的mapper.xml文件中,foreach元素常用于動(dòng)態(tài)生成SQL查詢(xún)條件,此元素包括item(必選,元素別名)、index(可選,元素序號(hào)或鍵)、collection(必選,指定迭代對(duì)象)、open、separator、close(均為可選,用于定義SQL結(jié)構(gòu))2024-09-09
Java中的延遲隊(duì)列DelayQueue詳細(xì)解析
這篇文章主要介紹了Java中的延遲隊(duì)列DelayQueue詳細(xì)解析,JDK自身支持延遲隊(duì)列的數(shù)據(jù)結(jié)構(gòu),其實(shí)類(lèi):java.util.concurrent.DelayQueue,<BR>我們通過(guò)閱讀源碼的方式理解該延遲隊(duì)列類(lèi)的實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下2023-12-12
關(guān)于SpringBoot打包測(cè)試、生產(chǎn)環(huán)境方式
這篇文章主要介紹了關(guān)于SpringBoot打包測(cè)試、生產(chǎn)環(huán)境方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
SparkStreaming-Kafka通過(guò)指定偏移量獲取數(shù)據(jù)實(shí)現(xiàn)
這篇文章主要為大家介紹了SparkStreaming-Kafka通過(guò)指定偏移量獲取數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

