내 말은 안드로이드의 텍스트에서 줄을 지우고 싶습니다. 어떻게 삭제합니까? 하나의 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 테스트 케이스 포함). 이 솔루션을 사용할 때의 이점은 고정 버퍼를 사용하므로 메모리 요구 사항을 예측할 수 있고 입력 파일 크기에 따라 변경되지 않기 때문에 메모리와 관련하여 완전히 확장 가능해야한다는 것입니다.
대체 할 파일을 String 버퍼에 저장 한 다음 대체하여 파일 내용 전체를 바꿉니다.
샘플 pls 줄? –
제안 해 주셔서 감사합니다. –
파일의 나머지 데이터를 복사 한 다음 파일을 비우고 마지막으로 복사 한 데이터를 복사하여 줄을 삭제할 수 있습니다. 다음 코드는 삭제할 문자열을 검색하고 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. 어떻게 드로잉을 지울 수 있습니까?
- 2. 어떻게 지울 수 있습니까? htaccess로
- 3. 어떻게 파일 내용을 지울 수 있습니까?
- 4. 전에 그린 그림을 어떻게 지울 수 있습니까?
- 5. 연결된 목록을 어떻게 지울 수 있습니까?
- 6. CoreData에서 어떻게 빨리 지울 수 있습니까?
- 7. 내가 만든이 개체를 어떻게 지울 수 있습니까?
- 8. Page.Request.QueryString을 지울 수 있습니까?
- 9. adorner 레이어를 지울 수 있습니까?
- 10. .CDX 파일을 지울 수 있습니까?
- 11. gitolite가 가지를 지울 수 있습니까?
- 12. 알림 표시 줄을 어떻게 그릴 수 있습니까?
- 13. vtkRenderWindow를 지울 수 없습니다.
- 14. TCanvas를 어떻게 지울 수 있습니까? 또는 다른 솔루션
- 15. 자바에서 SerialPort의 OutputStream을 지우지 않고 어떻게 지울 수 있습니까?
- 16. 다른 카테고리로 이동할 때 비교할 제품을 어떻게 지울 수 있습니까?
- 17. Interperter 내에서 Rhino의 JS 환경을 어떻게 지울 수 있습니까?
- 18. soapUI maven plugin을 어떻게 안전하게 지울 수 있습니까?
- 19. 어떻게 avrdude로 EEPROM을 제외한 모든 것을 지울 수 있습니까?
- 20. AppEngine을 로컬에서 (디버깅하는 동안) 실행하면 어떻게 데이터를 지울 수 있습니까?
- 21. ExtJS의 그리드에서 모든 항목을 어떻게 지울 수 있습니까?
- 22. 파이 게임 알파 레이어를 어떻게 효율적으로 지울 수 있습니까?
- 23. gwt 응용 프로그램에서 fileupload 위젯의 내용을 어떻게 지울 수 있습니까?
- 24. Class :: DBI의 내부 캐시는 어떻게 지울 수 있습니까?
- 25. 자바 스크립트를 사용하여 텍스트 영역에서 어떻게 지울 수 있습니까?
- 26. Facebook에서 앱 초대 알림을 어떻게 지울 수 있습니까?
- 27. PHP 코드로 브라우저의 캐시를 지울 수 있습니까?
- 28. iOS drawRect : 그래픽 컨텍스트를 지울 수 있습니까?
- 29. .txt에서 읽기
- 30. Thread.CurrentPrincipal을 지울 필요가 있습니까?
첫 줄? 마지막 줄? 중간 선? 예 : – Simon
21.line –
샘플을 보내시겠습니까? –