我将尝试创建目录并将数据写入该文件。我正在尝试使用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 {
}
答案 0 :(得分:3)
您不必关闭它,因为写入方法本身确保在写入最后一个字节后该文件将被关闭。
根据Files.write()方法的说明。
将字节写入文件。 options参数指定了如何 文件已创建或打开。如果没有选项,那么这个方法 就像CREATE,TRUNCATE_EXISTING和WRITE选项一样工作 当下。换句话说,它打开文件进行写入,创建 文件,如果它不存在,或最初截断现有文件 常规文件大小为0.字节数组中的所有字节都被写入 到文件。该方法确保在所有字节时关闭文件 已写入(或I / O错误或其他运行时异常) 抛出)。如果发生I / O错误,则可能在文件出现后执行此操作 创建或截断,或者在写入一些字节之后 文件。
只要您处理所有异常情况,它就没问题。
答案 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