file io - read()/write() calls on iOS seem to be limited by 2250 bytes -
file io - read()/write() calls on iOS seem to be limited by 2250 bytes -
i having unusual problem trying read , write 9k bytes open(), read() , write(). when effort write 9k file , read back, info goes 2250 bytes. after zeros.
here code (except filename isn't relevant, i'm putting nsdocumentdirectory):
int fp = open([appfile cstringusingencoding:nsasciistringencoding], o_rdwr | o_creat, 0644); [_detailviewcontroller log:@"first open() returns %i (err: %i)", fp, errno]; int data2[10000]; int data3[10000]; (int i=0;i<10000;i++) data2[i] = 1; [_detailviewcontroller log:@"resetting seek 0"]; int seekpos = lseek(fp, 0, seek_set); result = write(fp, data2, 9000); [_detailviewcontroller log:@"wrote 9k, result %i", result]; [_detailviewcontroller log:@"resetting seek 0"]; seekpos = lseek(fp, 0, seek_set); result = read(fp, data3, 9000); [_detailviewcontroller log:@"read 9k, result %i", result]; [_detailviewcontroller log:@"values of data2[2248-2252] = 0x%x 0x%x 0x%x 0x%x 0x%x", data2[2248], data2[2249], data2[2250], data2[2251], data2[2252]]; [_detailviewcontroller log:@"values of data3[2248-2252] = 0x%x 0x%x 0x%x 0x%x 0x%x", data3[2248], data3[2249], data3[2250], data3[2251], data3[2252]]; close(fp);
and here unusual output:
2013-02-13 14:08:38.290 filetester[2800:907] first open() returns 6 (err: 3) 2013-02-13 14:08:38.295 filetester[2800:907] resetting seek 0 2013-02-13 14:08:38.301 filetester[2800:907] wrote 9k, result 9000 2013-02-13 14:08:38.306 filetester[2800:907] resetting seek 0 2013-02-13 14:08:38.311 filetester[2800:907] read 9k, result 9000 2013-02-13 14:08:38.319 filetester[2800:907] values of data2[2248-2252] = 0x1 0x1 0x1 0x1 0x1 2013-02-13 14:08:38.327 filetester[2800:907] values of data3[2248-2252] = 0x1 0x1 0x0 0x0 0x0
as can see on lastly line, info goes zero.
any ideas might doing wrong? thing gets me both read() , write() homecoming 9000.
as mentioned ughoavgfhw (thanks!) problem was mixing bytes , ints. 9000 bytes same thing 2250 ints, since each int 4 bytes.
ios file-io system output bsd
Comments
Post a Comment