anhe
Aktives Mitglied
Thread Starter
- Dabei seit
- 13.11.2007
- Beiträge
- 1.899
- Reaktionspunkte
- 309
Hallo zusammen,
ich beschäftige (lerne) aktuell gerade mit dem öffnen, schliessen, und bearbeiten von Dateien. Mein OS ist OS X 10.11.2 und Xcode 7.2. Bei dem folgenden Minimalbeispiel kommt es zu einem Fehler, wenn ich eine Datei (testfile) auf meinem Synology NAS (mit Apache-Server) mit der Methode fileHandleForReadingFromURL einem FileHandle zuweisen möchte (Die IPdesNAS ist natürlich durch die tatsächliche IP ersetzt):
Hierbei erhalte ich die folgende Ausgabe:
Um den Fehler einzugrenzen habe ich zwei weitere Minimalbeispiele erstellt.
1.) Die gleiche Datei lokal auf meinem Mac einem FileHandle zugewiesen ergibt keinen Fehler.
2.) Eine Datei index.html die unter http://IPdesNAS/~anhe/web/Homepage/ auf dem NAS liegt kann auch ohne Fehler gelesen werden. An der Bereitstellung einer Datei als URL über das NAS mit dem Apache-Server scheint es nicht zu liegen.
Auf der Apple Developers Seite gibt es eine Auflistung der Error Objects, Domains, and Codes und dort findet sich in der Tabelle 1-1 Part of the POSIX-error code declarations (allerdings für iOS) unter Fehler 2 folgende Angabe:
Die Datei ist aber definitiv dort. Könnt Ihr mir helfen?
Ansonsten wünsche ich allen ein paar schöne Urlaubstage
Viele Grüße
André
ich beschäftige (lerne) aktuell gerade mit dem öffnen, schliessen, und bearbeiten von Dateien. Mein OS ist OS X 10.11.2 und Xcode 7.2. Bei dem folgenden Minimalbeispiel kommt es zu einem Fehler, wenn ich eine Datei (testfile) auf meinem Synology NAS (mit Apache-Server) mit der Methode fileHandleForReadingFromURL einem FileHandle zuweisen möchte (Die IPdesNAS ist natürlich durch die tatsächliche IP ersetzt):
Code:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSError *myError = nil;
NSURL *myURL2 = [NSURL URLWithString:@"http://IPdesNAS/~anhe/web/test/testfile"];
NSFileHandle *inFile = [NSFileHandle fileHandleForReadingFromURL:myURL2 error:&myError];
NSLog(@"%@", myError);
NSData *buffer;
if (inFile == nil) {
NSLog(@"Open of file for reading failed");
return 1;
}
buffer = [inFile readDataToEndOfFile];
[inFile closeFile];
NSString *returnDataFromBuffer = [[NSString alloc]initWithData:buffer encoding:NSUTF8StringEncoding];
NSLog(@"%@", returnDataFromBuffer);
}
return 0;
}
Hierbei erhalte ich die folgende Ausgabe:
Code:
Error Domain=NSCocoaErrorDomain Code=2 "(null)" UserInfo={NSFilePath=/~anhe/web/test/testfile}
Open of file for reading failed
Program ended with exit code: 1
Um den Fehler einzugrenzen habe ich zwei weitere Minimalbeispiele erstellt.
1.) Die gleiche Datei lokal auf meinem Mac einem FileHandle zugewiesen ergibt keinen Fehler.
Code:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSFileHandle *inFile = [NSFileHandle fileHandleForReadingAtPath:@"/Users/anhe/test/testfile"];
NSData *buffer;
if (inFile == nil) {
NSLog(@"Open of file for reading failed");
return 1;
}
buffer = [inFile readDataToEndOfFile];
[inFile closeFile];
NSString *returnDataFromBuffer = [[NSString alloc]initWithData:buffer encoding:NSUTF8StringEncoding];
NSLog(@"%@", returnDataFromBuffer);
}
return 0;
}
2.) Eine Datei index.html die unter http://IPdesNAS/~anhe/web/Homepage/ auf dem NAS liegt kann auch ohne Fehler gelesen werden. An der Bereitstellung einer Datei als URL über das NAS mit dem Apache-Server scheint es nicht zu liegen.
Code:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSError *myError = nil;
NSURL *myURL = [NSURL URLWithString:@"http://IPdesNAS/~anhe/web/Homepage/"];
NSString *myHomePage = [NSString stringWithContentsOfURL:myURL encoding:NSASCIIStringEncoding error:&myError];
NSLog(@"%@", myError);
NSLog(@"%@", myHomePage);
}
return 0;
}
Auf der Apple Developers Seite gibt es eine Auflistung der Error Objects, Domains, and Codes und dort findet sich in der Tabelle 1-1 Part of the POSIX-error code declarations (allerdings für iOS) unter Fehler 2 folgende Angabe:
#define ENOENT 2 /* No such file or directory */
Die Datei ist aber definitiv dort. Könnt Ihr mir helfen?
Ansonsten wünsche ich allen ein paar schöne Urlaubstage
Viele Grüße
André