[英]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.