Java文件I / O基础
Java 7引入了java.nio.file包,以提供對文件I / O的全面支持。 除了許多其他功能之外,該軟件包還包括Files類(如果您已經使用此類,則可以在這里停止閱讀)。
文件包含許多靜態方法,可用于在處理文件時完成常見任務。 不幸的是,在我看來,仍然使用舊的(Java 7之前版本)處理文件的方式編寫了許多更新的(Java 7+)代碼。 這不一定是壞事,但是它會使事情變得比所需的更為復雜。 造成這種情況的可能原因可能是在Java 7發行之前寫了許多文章和獲得很高評價的Stackoverflow答案。
在本文的其余部分中,我將提供一些代碼示例,這些示例說明如何使用Java 7或更高版本完成與文件相關的常見任務。
處理文件
//?Create?directories //?This?will?create?the?"bar"?directory?in?"/foo" //?If?"/foo"?does?not?exist,?it?will?be?created?first Files.createDirectories(Paths.get("/foo/bar"));//?Copy?a?file //?This?copies?the?file?"/foo/bar.txt"?to?"/foo/baz.txt" Files.copy(Paths.get("/foo/bar.txt"),?Paths.get("/foo/baz.txt"));//?Move?a?file //?This?moves?the?file?"/foo/bar.txt"?to?"/foo/baz.txt" Files.move(Paths.get("/foo/bar.txt"),?Paths.get("/foo/baz.txt"));//?Delete?a?file Files.delete(Paths.get("/foo/bar.txt"));//?Delete?a?file?but?do?not?fail?if?the?file?does?not?exist Files.deleteIfExists(Paths.get("/foo/bar.txt"));//?Check?if?a?file?exists boolean?exists?=?Files.exists(Paths.get("/foo/bar.txt"));大多數文件方法采用一個或多個Path類型的參數。 路徑實例代表文件或目錄的路徑,可以使用Paths.get()獲得。 請注意,此處顯示的大多數方法還具有一個附加的varargs參數,可用于傳遞其他選項。
例如:
Files.copy(Paths.get("/foo.txt"),?Paths.get("/bar.txt"),?StandardCopyOption.REPLACE_EXISTING);遍歷目錄中的所有文件
Files.walkFileTree(Paths.get("/foo"),?new?SimpleFileVisitor<Path>()?{@Overridepublic?FileVisitResult?visitFile(Path?file,?BasicFileAttributes?attrs)?throws?IOException?{System.out.println("file:?"?+?file);return?FileVisitResult.CONTINUE;} });在這里,/ foo目錄中的每個文件都會調用visitFile()方法。 如果您也想跟蹤目錄,則可以覆蓋SimpleFileVisitor的其他方法。
寫入和讀取文件
//?Write?lines?to?file List<String>?lines?=?Arrays.asList("first",?"second",?"third"); Files.write(Paths.get("/foo/bar.txt"),?lines,?Charset.forName("UTF-8"));//?Read?lines List<String>?lines?=?Files.readAllLines(Paths.get("/foo/bar.txt"),?Charset.forName("UTF-8"));所示方法適用于字符。 如果需要使用字節,可以使用類似的方法。
結論
如果您不了解java.nio.file.Files,則一定應該看看Javadoc方法摘要。 里面有很多有用的東西。
翻譯自: https://www.javacodegeeks.com/2014/05/java-file-io-basics.html
總結
以上是生活随笔為你收集整理的Java文件I / O基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 达拉然传送门在哪 一共有几个传送门
- 下一篇: 常见的Java神话