java - 写入文件直到限制大小为 1474560(软盘)
问题描述
所以我需要编写一个代码,使文本、pdf、jpg、...的大小达到或等于 1474560(软盘大小)。问题是如何进行此限制,以便 writeFile 将停止直到1474560 大小。
void newFileParser(String initialPath, String finalPath){
try{
FileWriter writeFile = new FileWriter(finalPath,true);
File newfile = new File(finalPath);
while(newfile.length() < 1474560){
writeFile.write("0\n");
}
writeFile.close();
if(newfile.length() <= 1474560){
System.out.println("New file is done");
}
System.out.println("The size of the NewFile: " + newfile.length());
}
catch (IOException e){
System.out.println("An error occurred");
e.printStackTrace();
}
}
解决方案
您使用FileWriter
which 缓冲输出。这意味着newFile.length()
可能返回的不是您写入的字节数,而是当前刷新到磁盘的字节数。
只需使用具有特定迭代次数的循环即可。并记住关闭finally
子句中的作者,或使用try-with-resources
,如下所示:
void newFileParser(String initialPath, String finalPath) {
File newfile = new File(finalPath);
long initialLength = 0;
if (newfile.exists()) {
initialLength = newfile.length();
}
try (FileWriter writeFile = new FileWriter(finalPath, true)) {
for (int i = 0; i < 1474560 - initialLength; i++) {
writeFile.write(0);
}
}
catch (IOException e) {
System.out.println("An error occurred");
e.printStackTrace();
}
System.out.println("The size of the NewFile: " + newfile.length());
}
推荐阅读
- netlogo - netlogo - 海龟的径向
- angular - 从 rxjs 添加诸如 `fromPromise` 之类的东西在 webpack 4 中不起作用
- ios - AFNetworking 从响应中修剪字符
- android - 如何从 Tizen Studio 在我的智能手表上安装应用程序
- java - 如何使用 H2 数据库对 Spring JPA 存储库中的自定义方法进行单元测试
- android - wifi中的带锁
- javascript - 如何防止在页面加载javascript时触发onchange事件
- javascript - requirejs 加载不正确的文件名和文件路径
- typescript - 目录中所有文件的 TsConfig.json 路径匹配
- angular - Angular6/MD PWA 与 Ionic 3 + Angular 6 PWA