[英]Java to Objective-C - Equivalent method to readUTF()?
是否有任何等效的方法可以从目标C中的Java中读取readUTF()?
这是我需要转换为目标C的代码段:
FileInputStream in = new FileInputStream(mapfile.dat);
ObjectInputStream si = new ObjectInputStream(in);
si.readUTF();
boolean create = si.readBoolean();
si.readBoolean();
if (create) {
si.readInt();
si.readInt();
si.readInt();
si.readInt();
int num=si.readInt();
if (num>0) {
for (int i=0;i<num;i++) {
si.readObject();
}
si.readInt();
}
num=si.readInt();
}
//.............
您要读取的文件有多大? 如果大小适中,则可以使用以下命令:
NSString * string = [ NSString stringWithContentsOfFile:pathToFile
encoding:NSUTF8StringEncoding error:NULL ] ;
一种方法是将整个文件读入字节数组(或NSData
实例),然后遍历数据。 当必须读取字符串时,可以调用NSString
stringWithUTF8String:
,然后跳过正确的字节数。 编码的字符串的末尾有两个空字节。
因此,读取字符串可能如下所示:
NSData* data = ...;
const char* dataPtr = [data bytes];
// read data and move dataPtr
// read string
NSString str = [NSString stringWithUTF8String: dataPtr];
dataPtr += strlen(dataPtr) + 2;
我使用strlen
是因为它不了解Unicode并只计算字节而不是字符。
如果您没有00FFFF以上的任何代码点,则此方法应该起作用。 如果有的话,我将需要更深入地研究Java二进制数据流使用的经过修改的UTF-8格式 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.