私はRad Studio 10.2 Tokyoを使用しており、IOS Native APIをラッピングしています。 私は/Documents/test.txtというファイルのファイルサイズを取得しようとしていますが、これはPOSIXを使って書き込みと読み取りができますが、とにかくファイルサイズを取得できません。ネイティブIOS APIを使用したIOSファイルサイズ
私はさまざまな方法で私のパスを取得:
私はPOSIX APIを使用してさまざまな方法を試してみました:
char path [256];
memset (path, 0, sizeof(path));
strcpy(path, getenv("HOME"));
strcat(path, "/Documents/test.txt");
long long fileSizeVal;
// Using lseek
int filesize= 0;
int fd = -1;
char path [256];
memset (path, 0, sizeof(path));
//HOME is the home directory of your application points to the root of your sandbox
strcpy(path, getenv("HOME"));
//concatenating the path string returned from HOME
strcat(path, "/Documents/test.txt");
fd = open (path, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);
if (fd == -1) {
return -1;
}
filesize = lseek(fd, 0, 2);
結果:ファイルサイズ= 0
を私はObjective-をラップすることにより、試してみましたCコード:
ネイティブコードから:
RadStudioにラップNSDictionary* attributeDict = [[NSFileManager defaultManager] attributesOfItemAtPath:resourcePath error:nil];
NSNumber* fileSizeObj = [attributeDict objectForKey:NSFileSize];
long long fileSizeVal = [fileSizeObj longLongValue];
:
_di_NSFileManager FileManager = TNSFileManager::Wrap(TNSFileManager::OCClass->defaultManager());
_di_NSDictionary attributeDict = FileManager->attributesOfFileSystemForPath(NSSTR(path), NULL);
_di_NSNumber fileSizeObj = TNSNumber::Wrap(TNSNumber::OCClass->numberWithLongLong(attributeDict->fileSize()));
fileSizeVal = fileSizeObj->longLongValue();
return fileSizeVal;
結果:サイズ= 0
:fileSizeVal = 0I結果stat構造体を
struct stat stat1;
if(stat(path, &stat1)) {
// something is wrong
}
long long size;
size = stat1.st_size;
return size;
を使用してみました
私がApple Developerサイトのリファレンスを見つけることができなかった唯一の事は、AAAAAAAA-BB-CC-DD-ZZZZZZZZは毎回違うが、 。
/private/var/mobile/Containers/Data/Application/AAAAAAAA-BBBB-CCCC-DDDD-ZZZZZZZZ/Documents/test.txt
私が期待するべきである一方で、何かのように:
/Users/steve/Documents/MyFile.txt
私はタフなこの仮定で間違っている可能性があります。
私は非常に不満です。
ファイルがそれを書いた後、存在する場合、私がチェック:
bool Exists = false;
_di_NSFileManager FileManager = TNSFileManager::Wrap(TNSFileManager::OCClass->defaultManager());
if (FileManager)
{
Exists = FileManager->fileExistsAtPath(NSSTR(path));
if (Exists == true)
return 1;
else
return 0;
}
をそして、それは正しくファイルが正しく書かれているように、答えを返し、私はPOSIXに戻ってそれを読んだとき、それは私に正しいバイトを返します。
あなたは読んで/書くことができますか?ファイル(あなたは実用的なURLを持っていることを意味します)? – Dopapp
iOSアプリです。なぜパスが "/Users/steve/Documents/MyFile.txt"のようなものになると思いますか?これはMacのパスであり、iOSデバイスのパスではありません。 – rmaddy
あなたのファイルがどこにあるのか推測しないでください。ファイルが存在するかどうか確認しましたか? – clemens