我的问题很清楚。根据当前API,我们可以删除整个文件或删除文件的全部内容。但我的需求只是从文件中删除固定数量的字节(数据)。如果我有大小30MB的文件。我想删除2MB的数据(从起始位置而不是从结束位置)。所以我的文件将减少到28MB。在此先感谢从java或android中删除固定数量的数据文件
0
A
回答
0
使用FileChannel.truncate(n)将文件修剪到指定的大小n。
long n = 4096;
File file = new File("FILE_PATH");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
FileChannel fc = raf.getChannel();
fc.truncate(n);
fc.size()
0
你应该看看RandomAccessFile。
这将让你寻找到你想要的文件中的位置,但你可以删除或更新你想要的段。
编辑:
嗯,这里是一些代码:
public class MainClass {
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOException, InterruptedException {
long count = 5;//your desired size
File file = new File("C:\\Users\\Pedram\\Desktop\\file.dat");
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
FileChannel fileChannel = randomAccessFile.getChannel();
System.out.println("Before deleting: " + randomAccessFile.length());
fileChannel.transferTo(count, fileChannel.size() - count, fileChannel);//write data from position(fileChannel.size() - count) to end of file from the orginal file
randomAccessFile.setLength(randomAccessFile.length() - count);//delete the unnecessary data
System.out.println("After deleting: " + randomAccessFile.length());
}
}
诀窍内transferTo
法规定,我们只是诱骗拉我们想要的东西出来呢
相关问题
- 1. Android:从数据库中删除数据
- 2. 从TortoiseHG数据源中删除文件
- 3. 从HDF5文件中删除数据
- 4. 从数据库中删除文件夹
- 5. 如何根据偏移量从文件中删除数据?
- 6. 从HashMap中删除数据java
- 7. Java:从队列中删除指定数量的元素
- 8. 从Oracle中删除大量数据
- 9. 从sqlite数据库中删除 - Android
- 10. Android - 从SDCard中删除数据
- 11. 从android数据库中删除一行
- 12. 如何从Android的按钮单击事件中的数据库中删除文本框中的选定数据?
- 13. 如何从Laravel的文件夹和数据库中删除文件或图像?
- 14. Java - 从文件[]数组中删除一些文件
- 15. 优化删除固定索引处的数据数组
- 16. 从Android的数据库删除项目
- 17. 删除文件中的某些数据
- 18. 从数据库中删除特定行
- 19. 从数据帧中删除特定行
- 20. UNLOAD命令是否从红移中删除或删除数据?
- 21. 从java中的excel文件中读取“删除类型参数”
- 22. 从给定关键字的文件中删除一定数量的行python
- 23. 如何从我确定的文件中删除一定数量的字符? (Python)
- 24. 在一个目录中删除从文件名固定图案
- 25. Android数据存储选择几个固定数量的条目,sqlite或sharedpreferences?
- 26. 变量通知当变量已经被eiher固定或删除
- 27. 删除大量的数据
- 28. 根据静态文件中的数据从动态文件中删除文本
- 29. 从Java中的文本文件中删除特定行
- 30. 从资产文件夹中删除数据库文件
我没不要尝试任何东西......因为这个概念在C语言中是可能的,但在java中不可能。 – Moses 2014-09-10 14:07:06
@SagarPilkhwal:我只能使用一个文件。因为在另一个线程中,我将一些数据添加到此文件。我的文件大小超过了限制。所以我必须从起始位置删除一些数据 – Moses 2014-09-10 14:09:05
这很好。你可以给一些代码从文件 – Moses 2014-09-10 14:27:54