2.6GB, 32 비트 부호있는 정수의 이진 파일, 100 개의 요소가 각 행입니다. 그때 어떻게 그것을 할, 초기 504 선을 읽지 않고 단지 505 라인을 읽을하고자하는 경우큰 데이터 파일의 일부를 Python, C 또는 Java로 읽는 방법?
DataInputStream dis = new DataInputStream(new FileInputStream("input.rawdata"))
for(int i = 0; i < 100; i++){
int idata = dis.readInt();
% DO THE NECESSARY TO LOAD idata IN A VARIABLE ARRAY %
}
dis.close();
그러나 :
나는 자바에서 라인별로 라인을 읽을 수 있습니까?
데이터가 100 x 1000 행렬이고 15-80 번째 행 & 100 - 200 번째 열의 사각형 만 읽으려는 경우. 위의 세 가지 언어 (바람직하게는 Python & Java) 중 하나에서이 작업을 수행하는 방법.
코드 효율성과 관련된 제안 사항을 매우 환영합니다. 속도 측면에서
#define FILESIZE [file size in bytes]
#define NUMROWS [number of rows]
#define NUMCOLS [number of columns]
#define cnk_size(X,Y) (X*Y)
#define ENDROW [desired ending row]
#define SRTROW [desired starting row]
#define ENDCOL [desired ending col]
#define SRTCOL [desired starting col]
void* data = malloc(FILESIZE*sizeof(unsigned char));
fgets((char*)data,FILESIZE,stdin);
void* chunk = malloc(sizeof(unsigned char)*cnk_size(ENDROW-SRTROW,ENDCOL-SRTCOL));
register i = SRTROW;
register j = SRTCOL;
register datptr = (unsigned int)data;
register cnkptr = (unsigned int)cnkptr;
for(i = SRTROW; i < ENDROW; i++)
for(j = SRTCOL; j < ENDCOL; j++)
*((char*)cnkptr++) = *((char*)(datptr + i*NUMCOL + j));
아마 최적화를위한 루프의 제거하지만 이것보다 훨씬 더 빨리 못하고, 및 수 : C에서
MMAP를 원하십니까? – vaultah
'fseek()'를 읽고 거기서 가져 가라. – NPE
2 진 파일의 행의 의미는 무엇입니까? –