我的意思是,我想從我的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 –
給我樣本? –