簡體   English   中英

在iOS中無法從NSInputstream讀取大文件

[英]Reading large files from NSInputstream is not working in ios

我正在嘗試從NSInputStream讀取大於300KB的大型圖像文件。 但是我最多只能得到300KB。 其他數據丟失。 如果您知道的話,請您能幫助我。 我正在等待您的寶貴答復。 我在下面提到了我的代碼:從NSStreamEventsHasBytesAvailable調用此readAllData方法:

    - (void)readAllData {

    if (_readData == nil) {
    _readData = [[NSMutableData data] retain];
    }

    while ([[_session inputStream] hasBytesAvailable])
    {
    unsigned   int bytesRead = 0;
    bytesRead = [[_session inputStream] read:buf maxLength:EAD_INPUT_BUFFER_SIZE];

    if (bytesRead) {

        NSMutableString *_string = [NSMutableString stringWithString:@""];
        for (int i = 0; i < _readData.length; i++) {
            unsigned char _byte;
            [_readData getBytes:&_byte range:NSMakeRange(i, 1)];
            if (_byte >= 32 && _byte < 127) {
                [_string appendFormat:@"%c", _byte];
            } else {
                [_string appendFormat:@"[%d]", _byte];
            }
        }

        [_readData appendBytes:(const void *)buf length:bytesRead];

    }

}

NSString *string=[NSString stringWithFormat:@"%d",_readData.length];
UIAlertView *sesView = [[UIAlertView alloc] initWithTitle:@"readDatalength"
                                                  message:string
                                                 delegate:self
                                        cancelButtonTitle:nil otherButtonTitles:@"OK"  , nil];
[sesView show];

}

當方法hasBytesAvailable返回NO時,它並不總是表示NSInputStream為空。 僅當NSInputStream的狀態為NSStreamStatusAtEnd時,它才處於結尾。 例如,從NSURL構建的流是異步的,並且在打開后沒有立即所有字節。 如果是這種情況,您應該訂閱NSInputStream ,將某些類聲明為NSStreamDelegate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM