做
final OutputStream output = new FileOutputStream(file);
截断文件
如果它已经存在?令人惊讶的是,Java的API留档没有说。API也不会留档Java7。语言本身的规范对FileOutputStream
类的语义学没有什么可说的。
我知道
final OutputStream output = new FileOutputStream(file, true);
导致附加到文件。但附加和截断并不是唯一的可能性。如果将100个字节写入1000字节的文件,一种可能性是最后900个字节保持原样。
FileOutputStream
是用来写二进制数据,这是最经常被覆盖。
如果要处理文本数据,最好使用FileWriter
,它具有方便的append
方法。
我在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来截断第二个进程可能正在读取的文件。。。
这;
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();
行吗
请注意,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