当前位置: 首页 > 知识库问答 >
问题:

FileOutputStream是否截断现有文件

秦飞航
2023-03-14

 final OutputStream output = new FileOutputStream(file);

截断文件如果它已经存在?令人惊讶的是,Java的API留档没有说。API也不会留档Java7。语言本身的规范对FileOutputStream类的语义学没有什么可说的。

我知道

 final OutputStream output = new FileOutputStream(file, true);

导致附加到文件。但附加和截断并不是唯一的可能性。如果将100个字节写入1000字节的文件,一种可能性是最后900个字节保持原样。

共有3个答案

楚涵润
2023-03-14

FileOutputStream是用来写二进制数据,这是最经常被覆盖。

如果要处理文本数据,最好使用FileWriter,它具有方便的append方法。

柯伟志
2023-03-14

我在Windows 2008 x86和java 1.6.0_32-b05上试过这个

我创建了两个进程,它们不断地向同一个文件写入一个1Mb的字符“b”,另一个4Mb的字符“a”。除非我用过

out = new RandomAccessFile(which, "rw");
out.setLength(0);
out.getChannel().lock();

我发现第三个读卡器进程可以读取一个似乎是以1Mb的“b”开头,然后是“a”的文件

我发现先写一个临时文件然后重命名

File.renameTo

这个文件也有用。

我不会依赖windows上的FileOutStream来截断第二个进程可能正在读取的文件。。。

  • 不是新的文件输出流(文件)
  • 也不FileOutputStream(file, false)(不截断)
  • 也不

这;

out = new FileOutputStream(which, false);
out.getChannel().truncate(0);
out.getChannel().force(true);

然而

out = new FileOutputStream(which, false);
out.getChannel().truncate(0);
out.getChannel().force(true);
out.getChannel().lock();

行吗

邵凯定
2023-03-14

请注意,FileOutputStream打开的是一个流,而不是一个随机访问的文件,所以我想这样做是有意义的,尽管我同意文档可能会更明确地描述它。

 类似资料:
  • 在更改MySql列的数据类型以存储Twilio调用ID(34个字符字符串)后,我尝试使用以下命令手动更改该列中的数据: 但是,我收到一个错误,看到列的数据类型被正确修改而没有意义?

  • 问题内容: 是否有Java库函数可用于将数字截断为任意数量的小数位?例如。 谢谢 问题答案: 像这样尝试BigDecimal的 setScale :

  • 本文向大家介绍js实现文字截断功能,包括了js实现文字截断功能的使用技巧和注意事项,需要的朋友参考一下 先前用jq做了一个文字截断功能,但是不用jq的项目要实现此功能还要引如jq显得过于麻烦。这里写了一个js的文字截断功能。直接上代码。  HTML(测试用的):  JS:  这里用getElementsByTagName获取所有节点遍历,if(Pox[i].getAttribute("limit"

  • 问题内容: 我对flush和close方法感到非常困惑。在我的代码中,我总是关闭我的对象。但是我想知道,如果我必须在这里使用冲洗方法,在哪里可以使用它? 我将编写一个反复下载4或5个文件的项目。我将编写一个方法(用于下载文件),我的方法将处于循环中并重复下载文件。我的方法将具有这样的代码。 该方法调用还是在关闭之前必须使用冲洗? 请注意,该代码运行良好:成功下载了文件。但是我不确定要使用。 问题答

  • 问题内容: 我只想在程序中记录异常的前几行。我知道,我可以执行以下操作以仅打印stacktrace的前5行: 但我宁愿使用log4j(或更精确地说,是在log4j上使用slf4j)进行日志记录。有没有办法告诉log4j它应该只打印stacktrace的前5行? 问题答案: 您可以在log4j中使用EnhancedPatternLayout来格式化堆栈跟踪。 请参阅http://logging.ap

  • 问题内容: 我写了一个大的sql脚本来创建CSV文件。我想每天晚上调用cronjob来创建一个新的CSV文件,并在网站上提供该文件。 假设我将文件存储在“ /home/sites/example.com/www/files/backup.csv”中 我的SQL是 当文件已经存在时,MySQL给我一个错误 文件“ /home/sites/example.com/www/files/backup.cs