• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MacRubyでのファイル読み書きができません。)

MacRubyでのファイル読み書きができない問題について

このQ&Aのポイント
  • MacRubyを利用してアプリを作っている中で、ファイルの読み書きができず困っています。
  • Xcode上での実行では問題なく動作するのですが、Deployするとファイルへのアクセスができません。
  • 試した方法はいくつかありますが、すべてうまくいきませんでした。どのように変更すればよいか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

質問文ではファイルを相対パスで指定していますが、実際にもそうなんですか? Deploy後に実行するときのカレントディレクトリと、読み書きしようとしているファイルが存在するディレクトリが合っていないんじゃないかという気がします。

pnly_bubbles
質問者

お礼

ありがとうございます。 すでにTwitterの方で解決してしまったのですが回答ありがとうございました。 相対パスではなく絶対パスでなくてはならないようです。 無事に動作するようになりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • iphoneアプリを初作成中でファイルオープンで困

    ボタンを押したらファイルから文字列を読み込み、表示するサンプルアプリを作成しようとしております。(xcode4初コーディングです) しかし、ビルド後にボタンを押しても何の反応もありません。 ファイル(テキスト)のロケーションが違うのかと思いあちこち変えてもうまくいかず。何か私が根本的に間違っているような気がしてきました。 何がおかしいのかご教授願いますでしょうか。 xcode4 プロジェクトロケーション: デスクトップ>>sample テキストファイルロケーション: デスクトップ>>sample>>Resources>>text.txt テキストファイル中身: aiueo(形式はUTF-8) sampleViewController.m -(IBAction)userbutton:(id)sender{ self.label1.text = [NSString stringWithContentsOfFile:@"text.txt" encoding:NSUTF8StringEncoding error:&error]; です。ビルドは問題なくできているようです。 こんな質問の仕方でよいのかもわかりませんが、よろしくお願い致します。

  • Objective C(iPhone SDK)でテキストファイルから一

    Objective C(iPhone SDK)でテキストファイルから一行毎データを読み出す方法を教えてください. つい最近Objective-Cを始めた初心者です. サーバ上にあるテキストファイルを読み込み,一行ごとデータを取り出し,その一行ずつ取り出したデータをTableViewの項目として表示したいと思っています.現在コンパイルが出来ているのは, NSString* text; NSString* path = @"(URL)test.txt"; NSError* error; text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error]; までです.また,読み込むテキストファイルの内容は 0001 0002 0003 0004 [EOF] となっています.このデータの一行ずつを配列に格納する方法を教えてください,よろしくお願いします.

  • Iphoneシミュレータでtxtファイルを作成する

    Iphoneシミュレータでtxtファイルを作成する 現在、Iphoneシミュレータ(3.1.3)上でプログラムを書いているのですがうまく動きません。 動作の内容はファイルを作成して、そこに文字列を書き込むだけです。 具体的にコードをはらせていただきますと、 NSArray* paths; NSString* path; paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); path = [paths objectAtIndex:0]; path = [path stringByAppendingPathComponent:@"text.txt"];   NSString *str = @"hello";   [str writeToFile:path atomically:YES encodidng:NSUTF8StringEncoding error:nil]; このようなコードを書いております。 コンパイルは正常に通るのですが、実行してみると最後のwriteToFileの行までくると強制的におちてしまいます。 どこがおかしいのでしょうか?ご指導よろしくおねがいします。

  • xcode iOSでのファイル操作について。

    知っている方、いましたらご教授お願いいたします。 ■現状 xCodeにてios7アプリを開発中で、ボタンが押下されたら テキストファイルへ文字列を保存するものを作っています。 しかしながら、なぜかテキストファイルへの保存がiosシュミレーター上で失敗してしまいます。 ソースコードは以下になります。 ■ソース NSString *homeDir; NSString *docDir; NSString *filePath; NSString *str; NSError *error; //Homeディレクトリのパス取得 homeDir=NSHomeDirectory(); //Documentsディレクトリのパス作成 docDir=[homeDir stringByAppendingPathComponent:@"Documents"]; //ファイルのパス作成 filePath=[docDir stringByAppendingPathComponent:@"test.txt"]; //ファイルのパスを表示 NSLog(filePath); //ファイルへの書き込み str=@"test¥ntest¥ntest"; //testを3行書く //[str writeToFile:filePath atomically:YES]; BOOL result = [str writeToFile:inSaveFilePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; if(result != YES) { NSLog(@"Error:%@", [error localizedDescription]); } ■エラー内容 error NSError * domain: @"NSCocoaErrorDomain" - code: 4 0x08dd4130 なにが悪いのかがさっぱり分からず困惑しています。 サンプルページなどでも構いませんので、ご教授のほどお願いいたします。 以上、よろしくお願いいたします。

  • csvデータの添付メール送信について

     xcode6, iOS8, object C の初心者です。
 
iPodtouch の傾斜センサーを使用して、 int angle_ar[] に値を50個ほど
格納したものを、 csvData[ ] にカンマ区切りで入れ(csvデータ),
取得したNSStringをNSdataに次の2行にて変換しました。 (当相談室にて解決済み)
 ファイル保存はせず、データを直接、メール添付にて自分宛に送ろうとしています。 NSString* str = [NSString stringWithCString: csvData encoding:NSUTF8StringEncoding];
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
 ここまでは、デバッガーで内容を確認しました。

 しかし、下記プログラムの
[controller setMessageBody:@"incl_data" isHTML:NO ];
まで行ったところで、(最終行) 
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
 // main.m
 // i_Scol-face_r

 #import <UIKit/UIKit.h>
 #import "AppDelegate.h"
 
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

Thread 1: EXC_BAD_ACCESS (code=1, address=0x3239) と表示され、
}
}
 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 内容をたどってみると、

libobjc.A.dylib'objc_msgSend:
3行目、
ldrh.w r12, [r9, #0xc] Thread 1: EXC_BAD_ACCESS (code=1, address=0x3539) 

あたりで止まってしまっています。

どなたか、解決策、ご教示頂けましたら、幸いです。

宜しくお願い致します。

 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

- (IBAction)buttn_mail:(id)sender {
 char *value_chr;

 for (int i=0; i <=jcount_m; i++) { 
 sprintf(value_chr, "%d", angle_ar[i]);
    strcat(csvData, value_chr);
strcat(csvData, ",");
 }

 MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];

 // 取得したNSStringをNSdataに変換 
// NSData* data = [csvData dataUsingEncoding:NSUTF8StringEncoding]; エラー発生のため、下記に修正

 NSString* str = [NSString stringWithCString: csvData encoding:NSUTF8StringEncoding];
 NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];

 // mimeTypeはtext/csv
 [controller addAttachmentData:data mimeType:@"text/csv" fileName:@"export.csv"];
 [controller setSubject:@"data_ mail" ];
 [controller setToRecipients:[ NSArray arrayWithObject:@"xxx@xxx.ac.jp" ] ];
 [controller setMessageBody:@"incl_data" isHTML:NO ];

 }

  • iPhoneアプリ開発 ファイル書き込み

    iPhoneアプリ開発につきまして、質問させて頂きます。 csvファイルへのデータの出力を試みているのですが上手くできません。 プログラムとログ内容を以下に記述しました。 「abc」と予め書いてある「hoge.csv」ファイルに「stringaaaaaaaaaaa」を書き込み保存しておきたいのですが、上手くいきません。 ログ内容を見る限り、「abc」が読み込めているので、パスは合っていると思っています。また、writeToFileをしてから読み込むと「stringaaaaaaaaaaa」が読み込めるため、どこかには書き込めているような気がします。 しかし、毎回同じ処理をしても、最初に読み込まれるのは「abc」です。「hoge.csv」をテキストエディタで読み込んでも表示されるのは「abc」です。 また、iPhoneシミュレーターで実行した結果は以下のログ内容なのですが、iPhone実機で動作させると、writeToFileを行ったあとでも「abc」が出力されます。 何か原因を思い当たる方、教えて頂ければ幸いです。 - (void)viewDidLoad { [super viewDidLoad]; [self setTitle:@"Stress Application"]; printf("viewdidload"); NSString *text = [[NSString alloc] initWithFormat:@"stringaaaaaaaaaaaaaaa"]; NSString *_path = [[NSBundle mainBundle] pathForResource:@"hoge" ofType:@"csv"]; //atomicallyは補助ファイルを使ってファイルの破損を防止するかどうか NSLog(@"%@",[NSString stringWithContentsOfFile:_path encoding:NSUTF8StringEncoding error:nil]); [text writeToFile:_path atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",[NSString stringWithContentsOfFile:_path encoding:NSUTF8StringEncoding error:nil]); NSLog(@"%@",text); } <ログ内容> 2012-10-31 12:35:10.187 ThinkGearTouch[17182:1a903] FinishLaunching viewdidload2012-10-31 12:35:10.204 ThinkGearTouch[17182:1a903] abc 2012-10-31 12:35:10.212 ThinkGearTouch[17182:1a903] stringaaaaaaaaaaaaaaa 2012-10-31 12:35:10.212 ThinkGearTouch[17182:1a903] stringaaaaaaaaaaaaaaa

  • locale::idとid型について

    objective-cでなんでも入れられるid型がありますが、cocos2dの環境下でc++から呼び出したいときにidにあう型がありません。一応std::local::idというのを見つけたのですが void DBClassBridge::updateColumn(string table, string field, locale::id input, string where, string target) { [DBClass_objc updateColumn:[[[NSString alloc] initWithCString:table.c_str() encoding:NSUTF8StringEncoding] autorelease] field:[[[NSString alloc] initWithCString:field.c_str() encoding:NSUTF8StringEncoding] autorelease] input:(id)input //ここでエラー where:[[[NSString alloc] initWithCString:where.c_str() encoding:NSUTF8StringEncoding] autorelease] target:[[[NSString alloc] initWithCString:target.c_str() encoding:NSUTF8StringEncoding] autorelease]]; } 以下のようなエラーが出ます。 Cannot convert 'locale::id' to 'id' without a conversion operator やはりデータ型があっていないっぽいです。 objective-cのid型にはどのデータ型を用いればいいのでしょうか?またはlocal::idからidへとどう変換すればいいのでしょうか? 知っている方、是非お願いします。

  • objective-c テキストファイルのカウンタ

    ■環境:xcode4.2 ■iOS:5.1 DocumentDirectoryに保存した テキストデータを利用した、 カウンターを制作しようとしております。 現状、テキストファイルから数字を読み出し、 1数値を足して、上書き保存するカウンターを試していますが、 結果蓄積されるテキストファイルは「1」になって、 以降2 3 ~と増えずに、思った動作をしておりません。 私は経験が浅く基本的なところが間違えているかもしれません。 どなたか、こちらの具体的な解決方法を ご教示いただけますでしょうか? よろしくお願いいたします。 //カウント テキスト読み込み NSArray *pathcount = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *count_moto = [[pathcount objectAtIndex:0]stringByAppendingPathComponent:@"count.text"]; //カウント加算 int count = [count_moto intValue]; int countplus = count++; NSString *fixcount = [NSString stringWithFormat:@"%d",countplus]; //カウント テキスト書き込み [fixcount writeToFile:count_moto atomically:YES encoding:NSUTF8StringEncoding error:NULL];

  • ネットワーク上のファイルの読み書きの速度について

    いつもお世話になっております。 標題の件に関してですが、ネットワーク上のファイルに \\○○\△△\□□.txt といった具合でアクセスして、ファイルの読み書きをする場合、 速度は何処に依存するのでしょうか? ファイルが置いてあるPCのスペックでしょうか? ファイルにアクセスするPCのスペックでしょうか? ネットワークの問題でしょうか? 以上です。よろしくお願い致します。

  • objectiv-cで困っています。教えてください

    objectiv-cの勉強を始めたばかりです。ネットで調べながら進めているのですが、プロジェクト内のテキストファイルではなく、サーバにあるテキストファイルの内容を読み込み、NSLogに出力しようとしているのですが、うまくいきません。xxxxxxxxxxxの部分にテキストファイルのあるURLを入れています。 -----------------textloadViewController.h------------------------------ #import <UIKit/UIKit.h> @interface textloadViewController : UIViewController @end -----------------textloadViewController.m------------------------------ #import "textloadViewController.h" @interface textloadViewController () @end @implementation textloadViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. NSError *error = nil; NSString *filePath = [[NSBundle mainBundle] pathForResource:@"xxxxxxxxxxx" ofType:@"txt"]; NSString *string = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; NSLog(@"%@", string); } @end 外部のテキストファイルを読み込む方法を教えてください。よろしくお願いします。