대용량 파일 인 10 만 줄이 있습니다. 나는 각 라인을 읽고 그것을 처리 할 수있다. 또는 라인을 어레이에 저장 한 다음 그것을 처리 할 수있다. 여분의 기능을 위해 배열을 사용하는 것을 선호하지만 배열에 많은 행을 저장하는 것과 관련된 메모리 사용에 대해 정말로 우려하고 있습니다.대용량 파일을 한 줄씩 읽거나 줄을 배열에 저장
6
A
답변
3
익숙해 져야 할 두 가지 기능이 있습니다.
첫 번째 파일은 file()
입니다.이 파일은 전체 파일을 배열로 읽어 들이고 각 줄은 배열 요소로 읽습니다. 이것은 짧은 파일에 유용하며 아마도 100k 라인 파일에서 사용하고자하는 것이 아닙니다. 이 함수는 자체 파일 관리를 처리하므로 파일을 명시 적으로 열고 닫을 필요가 없습니다.
두 번째 파일은 한 번에 한 줄씩 파일을 읽는 데 사용할 수있는 fgets()
입니다. 처리 할 줄이 더있는 한이 줄을 반복하여 루프 내에서 줄 처리를 실행할 수 있습니다. 이 파일에 대한 핸들을 얻으려면 fopen()
을 사용해야합니다. 복구 관리를 위해 파일 포인터를 직접 추적해야 할 수 있습니다 (즉, 무언가가 옆으로 가고 스크립트가 실패하면 다시 처리하지 않아도됩니다.)
시작하면 충분합니다.
1
둘의 조합은 어떻습니까? 배열에 1000 줄을 읽고 처리하고 배열을 삭제 한 다음 1000 개를 읽습니다. 메모리 사용을 모니터링하고 한 번에 배열에 읽는 횟수를 조정합니다.
관련 문제
- 1. 스칼라 : 파일을 한 줄씩 한 줄씩 읽음
- 2. 파일을 한 줄씩 읽는 방법
- 3. C에서 파일을 한 줄씩 읽음
- 4. 파일을 한 줄씩 읽고 가변 길이의 줄을 인쇄하십시오.
- 5. Amazon S3에서 파일을 한 줄씩 읽으시겠습니까?
- 6. Erlang에서 한 줄씩 파일을 작성하는 방법
- 7. 텍스트 파일을 한 줄씩 파일을 읽고 각 줄을 android를 사용하여 배열에 저장하는 방법은 무엇입니까? xls 파일을 android에서 읽을 수 있습니까?
- 8. 파일에서 "동적으로"파일에서 한 줄씩 파일을 읽습니다. 방법을 사용하여
- 9. 각 줄의 배열에 개체를 저장하면서 한 줄씩 파일 읽기
- 10. Android에서 큰 파일을 한 줄씩 읽습니다.
- 11. C++을 사용하여 한 줄씩 한 줄씩 읽음
- 12. 파일을 한 줄씩 암호화/암호 해독 하시겠습니까?
- 13. Java : 한 줄씩 병렬로 읽을 때 두 줄을 비교하십시오.
- 14. Camel을 사용하여 파일을 한 줄씩 씁니다.
- 15. 배열 단위로 파일을 한 줄씩 읽습니다.
- 16. mmap을 사용하여 파일을 한 줄씩 읽습니다.
- 17. txt를 한 줄씩 읽음
- 18. 셸에서 변수를 한 줄씩 읽는 동안 줄을 확인하는 방법
- 19. 파일 한 줄씩 읽기
- 20. 루비에서 파일을 한 번 이상 읽거나 grepling
- 21. 대용량 변수 저장
- 22. 파일에서 한 줄씩 파일을 읽는 방법? AWK 안에
- 23. mysql에서 50 줄씩 100 줄을 읽거나 텍스트 파일에서 읽는 것이 더 빠릅니까?
- 24. DataGridview에서 한 줄씩 데이터 삽입
- 25. R - STDIN을 한 줄씩 읽음
- 26. 문자열 형식 변수에 한 줄씩 파일을 읽는 방법은 무엇입니까?
- 27. 사전 파일을 한 줄씩 읽는 것은 공백이 많은 문자열을 사용합니다.
- 28. 자바에서 텍스트를 한 줄씩 읽음.
- 29. bash를 사용하여 파일을 한 줄씩 읽으며 일부 데이터를 추출합니다. 방법?
- 30. apache를 사용하여 .docx 파일을 통해 한 줄씩 반복하는 방법 POI
이 작업을 한 번만 수행해야합니까, 아니면 동시에 많은 웹 사용자가이 작업을 트리거 할 예정입니까? 그리고 많은 경우, 왜 파일의 내용을 데이터베이스에 저장하지 않습니까? –
'SplFileObject'를 사용하여 텍스트 라인 (iterator)에 대한 배열과 같은 접근을 얻을 수 있습니다. – mario
아마도 문제에 대한 더 나은 접근 방법을 찾지 못했을 것입니다. 드물게 당신은 100 000 라인을 모두 동시에 * 메모리에서 열어야합니다. 이를 수행하는 다른 방법을 생각해보십시오. 기존 계획에 성능 문제가있을 것입니다. – Incognito