我正在尝试通过NSInputStream从我的文档目录中读取自定义文件,以将其上传到FTP服务器。我使用的是与Apple提供的SimpleFTPSample中演示的完全相同的代码。只要文件为空,它似乎工作正常,但只要它包含数据就会失败。
这是我的代码。这是我创建输入流的方式,我尝试了两种方式:
//Approach one: Init with path
self.fileStream = [NSInputStream inputStreamWithFileAtPath:filePath];
//Approach two: Init with data
NSData* fileData = [NSData dataWithContentsOfFile:filePath];
self.fileStream = [NSInputStream inputStreamWithData:fileData];
如果我使用数据初始化流,则在流上调用EXC_BAD_ACCESS (code=1, address=0x0)
时会得到read
(下面的代码被剪断),如果我使用它直接跳转到File read error
的路径。 / p>
filePath
是@"/var/mobile/Applications/94292A2A-37FC-4D8E-BDA6-A26963932AE6/Documents/1395576645.cpn"
,NSData
正确返回,有806个字节。
这是stream:handleEvent:
委托方法的一部分:
if (self.bufferOffset == self.bufferLimit) {
NSInteger bytesRead;
bytesRead = [self.fileStream read: self.buffer maxLength: kSendBufferSize];
if (bytesRead == -1) {
if (kPrintsToConsole) NSLog(@"File read error");
} else if (bytesRead == 0) {
[self stopSending];
} else {
self.bufferOffset = 0;
self.bufferLimit = bytesRead;
}
}
我有点卡住了。希望你们能帮助我。运行iOS 7.1& Xcode 5.1
答案 0 :(得分:1)
你需要在阅读之前调用[self.fileStream open]。对于文件和数据方法。