如何关闭Files.write

时间:2017-07-08 07:17:30

标签: java io 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 {
    }

3 个答案:

答案 0 :(得分:3)

  1. 结案文件
  2. 您不必关闭它,因为写入方法本身确保在写入最后一个字节后该文件将被关闭。

    根据Files.write()方法的说明。

      

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

    1. 正确创建目录和写入大数据文件的方法。
    2. 只要您处理所有异常情况,它就没问题。

答案 1 :(得分:2)

import Login from '@/containers/views/login/Login.vue' describe('Login.vue', () => { it('checks text inside login component', () => { const wrapper = mount(Login) // let parent = wrapper.find('.hyperlogo')[0] // expect(wrapper.contains('.hyperlogo')).to.equal(true) if (wrapper.find('.hyperlogo')[0]) { console.log('Yes it is there') } expect(wrapper.text()).to.equal('') expect(wrapper.find('center')[0].is('center')).to.equal(true) }) }) 方法“...确保在写完所有字节后文件已关闭..”,请参阅Java SE 8 Doc

要将数据写入文件,请参阅Reading, Writing, and Creating Files

答案 2 :(得分:2)

如果您使用的是JDK 1.7,请使用try-with-resource,它会自动关闭资源。例如。 try(initialize your file resource here){} 阅读有关try-with-resource here

的更多信息