4

1 つのファイルに 100 MB のデータがあります。この 100 mb のデータは仮想的に分割されます。つまり、異なる 5MB チャンクを指す NSInputStream を作成する必要があります。これは、NSData でストリームを作成することで可能になります。

しかし、むしろ、ファイル内のデータの範囲を指す NSInputStream を持つことができるかどうか知りたいですか?

4

1 に答える 1

4

NSInputStreamインスタンスを渡してファイルをアップロードする場合はNSURLRequest.HTTPBodyStream、サブクラスを作成し、NSInputStreamアップロードするバイトのみをストリーミングする必要があります。使用NSFileHandleはここではオプションではありません。

NSInputStreamで動作する のサブクラスを作成するのNSURLRequestは非常に難しいですが、幸いなことに、それを実現する方法についてのすばらしいブログ投稿があります。

NSInputStreamここでは、この目的のためにすぐに使用できる のサブクラスを見つけることができます

ChunkInputStreamファイルを別の読み取りでフィードしNSInputStream、開始位置と読み取るバイト数を渡すことができます。

迅速な例:

let fileInputStream = NSInputStream(fileAtPath: "/tmp/readme")
let inputStream = ChunkInputStream(inputStream: fileInputStream)
inputStream.startPosition = 2097152
inputStream.readMax = 1048576
于 2015-08-06T19:58:53.013 に答える