3

デバイス上でプログラムでfile.txtを作成し、アプリケーションでデータを書き留めてから、このデータをコンピューターに送信する最も簡単な方法は何ですか?

最後の部分は、コンピューター上のプログラムを使用してデバイスからデータを取得するのと同じようにプログラムで実行できると思います。

今までこのようなことをしています

NSFileHandle *infile;
NSFileManager *fm;
fm=[NSFileManager defaultManager];
NSString *strings=[@"/Downloads/file.txt" stringByExpandingTildeInPath];

if (![fm fileExistsAtPath:strings]) {
 [fm createFileAtPath:strings contents:nil attributes:nil];
 infile=[NSFileHandle fileHandleForWritingAtPath:strings];
 [infile writeData:[[NSString stringWithFormat:@"lalala japierdole\n", [NSDate date]] dataUsingEncoding:NSUTF8StringEncoding]];
}else {
 infile=[NSFileHandle fileHandleForWritingAtPath:strings];
 [infile seekToEndOfFile];
}
[infile writeData:[[NSString stringWithFormat:@"lulukukuioio.\n", [NSDate date]] dataUsingEncoding:NSUTF8StringEncoding]];

これは、ファイルが存在しない場合にファイルを作成し、一部のデータを書き留めているだけですが、パスに問題があります。このコードは、デバイスでこれを試しているときにシミュレーターで作業しているときに正常に機能します。ファイルを作成するかどうか、後でファイルから受け取る方法さえわかりません。

4

1 に答える 1

6

生データをファイルに読み書きするための最も簡単なAPI:

NSData *data = [NSData dataWithContentsOfFile:path];
[data writeToFile:path atomically:NO];

問題が発生している理由は、パスがデバイスで有効でないためです。これを試して:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
if ( paths.count > 0 )
{
  NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"file.txt"];
  NSData *data = [NSData dataWithContentsOfFile:path];
  ...
}
于 2012-04-15T14:23:40.707 に答える