我的意思是,我想从我的android文本中删除行。我如何删除? 我不想读取一个txt并使用删除行创建另一个txt。我想从我现有的txt删除行。 谢谢。如何从txt删除行?
回答
这是一个非常棘手的问题,尽管它看起来微不足道。在可变行长的情况下,可能您唯一的选择是逐行读取文件以识别目标行的offset
和length
。然后复制文件的以下部分,从offset
开始,最终将文件长度截断为其原始大小减去目标行的长度。我使用RandomAccessFile
来访问内部指针,并且还可以通过行读取。
此程序需要两个命令行参数:
args[0]
是文件名args[1]
是目标线数(从1开始:第一行是#1)
public class RemoveLine {
public static void main(String[] args) throws IOException {
// Use a random access file
RandomAccessFile file = new RandomAccessFile(args[0], "rw");
int counter = 0, target = Integer.parseInt(args[1]);
long offset = 0, length = 0;
while (file.readLine() != null) {
counter++;
if (counter == target)
break; // Found target line's offset
offset = file.getFilePointer();
}
length = file.getFilePointer() - offset;
if (target > counter) {
file.close();
throw new IOException("No such line!");
}
byte[] buffer = new byte[4096];
int read = -1; // will store byte reads from file.read()
while ((read = file.read(buffer)) > -1){
file.seek(file.getFilePointer() - read - length);
file.write(buffer, 0, read);
file.seek(file.getFilePointer() + length);
}
file.setLength(file.length() - length); //truncate by length
file.close();
}
}
Here is the full code,包括一个JUnit测试用例。使用这种解决方案的优势在于它应该对内存完全可扩展,即由于它使用固定缓冲区,其内存需求是可预测的,并且不会根据输入文件大小而改变。
尝试将文件存储到字符串缓冲区中替换您想要替换的文件,然后完全替换文件的内容。
给样品? –
我尝试感谢您的建议 –
您可以通过复制文件中的其余数据,然后清空文件并最终写入复制的数据来删除一行.Thr下面的代码搜索要删除的字符串并跳过要复制到stringBuider中的代码。 stringBuilder的内容在冲洗后被复制到同一文件
try {
InputStream inputStream = openFileInput(FILENAME);
FileOutputStream fos = openFileOutput("temp", Context.MODE_APPEND);
if (inputStream != null) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String receiveString = "";
String deleteString = "<string you want to del>";
StringBuilder stringBuilder = new StringBuilder();
while ((receiveString = bufferedReader.readLine()) != null) {
if (!reciveString.equals(deleteline)) {
stringBuilder.append(receiveString);
}
}
fos.flush();
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(stringBuilder.toString().getBytes());
fos.close();
inputStream.close();
}
- 1. 如何从.txt中删除单词
- 2. 从txt文件中删除前两行
- 3. 从txt文件中删除一行java
- 4. 从txt文件中删除空行
- 5. C++从.txt文件中删除行
- 6. 删除线从.txt呆子
- 7. 如何使用php从txt中删除多行
- 8. 如何从jQuery/javaScript中的txt文件中删除一行
- 9. 如何从csv/txt插入之前在postgresql中删除一行
- 10. 如何从R的txt文件中删除n行?
- 11. 如何从txt文件中删除一行文本
- 12. 如何从TableLayout删除行?
- 13. 如何删除“从txt文件标记我从Excel导出
- 14. Grep - 如果它包含数字,则从txt删除行
- 15. 如何自动删除txt讯息?
- 16. txt文件删除
- 17. 批量删除txt文件中的行
- 18. C#:删除Txt文件中的一行
- 19. Txt导入表空行删除
- 20. 删除换行符在txt文件
- 21. 从txt文件中删除双引号
- 22. 从txt文件中删除列
- 23. 从保存的txt删除“”标记
- 24. 从文件名删除.txt - Java
- 25. 如何从子表中删除从父表中删除的行?
- 26. 如何从txt读取行?
- 27. 如何使用findstr删除.txt文件中的单行批次
- 28. 如何使用powershell从txt文件中删除前几个字
- 29. 如何从txt文件中删除不需要的空间
- 30. (EXCEL VBA)如何从txt输出中删除逗号和空格?
第一行?最后一行?中线? – Simon
例如21.line –
给我样本? –