2017-07-08 143 views
1

我将尝试创建目录并将数据写入该文件。我正在尝试使用java nio来更有效地写入文件。我的疑问是如何在下面写下它是我的代码后关闭它。请指教我。如何关闭Java Nio文件写入

这是创建目录和写入大型数据文件[200 kb]的正确方法。

java.nio.file.Path path = java.nio.file.Paths.get(filePath); 

    try { 
     if (!java.nio.file.Files.exists(path)) { 
      java.nio.file.Files.createDirectories(path.getParent()); 
      path = java.nio.file.Files.createFile(path); 
      path = java.nio.file.Files.write(path, data.getBytes()); 
     } else { 
      java.nio.file.Files.write(path, data.getBytes("utf-8"), 
        java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.TRUNCATE_EXISTING); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
    } 

回答

1
  1. 关闭文件

你不必关闭它作为写入方法本身确保器是该文件将被关闭,一旦最后一个字节被写入。

按照Files.write()方法的描述。

将字节写入文件。 options参数指定如何创建或打开 文件。如果没有选项存在,则此方法 的工作方式就好像CREATE,TRUNCATE_EXISTING和WRITE选项存在 一样。换句话说,它将打开文件进行写入,如果文件不存在,则创建 文件,或者最初将现有的 常规文件截断为大小0.字节数组中的所有字节都将 写入文件。该方法确保在写入所有字节 (或I/O错误或其他运行时异常抛出 )时关闭文件。如果发生I/O错误,则在文件创建或截断 之后,或者在将某些字节写入 文件后,可能会发生I/O错误。

  1. 创建目录和写入大型数据文件的正确方法。

只要您处理所有异常情况,就可以。

+0

@ Umesh。我们能否通过File对象来使用nio写入。 – DEADEND

+0

不,没有提供这样的方法,但你可以随时写你的 –

2

Files.write(...)方法“......确保到所有字节已经写入文件被关闭......”,看到Java SE 8 Doc

将数据写入到一个文件中看到Reading, Writing, and Creating Files

+0

@ Thomas,我使用的是java 7。它会关闭java 7中的默认值吗? – DEADEND

+1

是的,请参阅:[https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#write(java.nio.file.Path,%20byte[],%= 20java.nio.file.OpenOption ...)] –

+0

好的,谢谢托马斯 – DEADEND

2

如果您使用的是JDK 1.7以后,使用try-with-resource它会自动处理关闭资源。例如。 try(initialize your file resource here){} 阅读更多关于试用资源here

+0

@ Anil,我们能否在试用资源中使用java nio,我试过链接。但我没有得到。 – DEADEND

+0

@deadend甚至有给java java doc页面的java nio给出的例子,请仔细阅读。 –