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"));
File的大多数方法都采用一个或多个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查看文件