什么相当于java中的fopen_s()?

时间:2012-09-12 04:29:46

标签: java c++

我想在java中转换此代码

fopen_s(&stream, "path", "w+");

w+打开包含读写的空文件。如果给定文件存在,则其内容将被销毁。

有什么建议吗?

5 个答案:

答案 0 :(得分:3)

nio似乎需要1.7 java,所以我的看法是

RandomAccessFile f = new RandomAccessFile(name, "rw");
f.setLength(0);

答案 1 :(得分:2)

我不是Java程序员,但我在网上进行了短暂的搜索,似乎Java有一个RandomAccessFile并且您使用模式"rw"打开它。

答案 2 :(得分:1)

真正的等价物是使用Files.newByteChannel

final SeekableByteChannel channel = Files.newByteChannel(Paths.get("path"),
    StandardOpenOptions.READ, StandardOpenOptions.WRITE,
    StandardOpenOptions.TRUNCATE_EXISTING);
  

READWRITE选项决定是否应该打开文件进行阅读和/或写作。

     

...

     

TRUNCATE_EXISTING - 如果存在此选项,则现有文件将被截断为0字节的大小。仅打开文件进行读取时,将忽略此选项。

答案 3 :(得分:0)

看起来您想要FileOutputStreamFileWriter,具体取决于您要编写的数据类型。它们中的任何一个都可以用文件名实例化。

FileOutputStream fis = new FileOutputStream("/path/to/file");
FileWriter fw = new FileWriter("/path/to/file2");

如果文件已存在,两者都会破坏文件。 (虽然存在构造函数用于追加而不是覆盖)

答案 4 :(得分:0)

快速实现您想要的目标:

import java.io.*;
// Create a new file output connected to "myfile.txt"
out = new FileOutputStream("myfile.txt");
// Create a new file input connected to "myfile.txt"
in = new FileInputStream("myfile.txt");

您可能需要查看java.io包at the official docs,尤其是RandomAccessFile Classalso this quick guide