4
我在單個文件中有100 MB的數據。這100兆數據將被虛擬分割。即我需要創建一個指向不同5MB塊的NSInputStream。 這可以通過使用NSData創建流來實現。繼承NSInputStream以從本地文件路徑上傳特定部分的數據
但是,我想知道是否可以有一個NSInputStream指向文件中的一系列數據?
我在單個文件中有100 MB的數據。這100兆數據將被虛擬分割。即我需要創建一個指向不同5MB塊的NSInputStream。 這可以通過使用NSData創建流來實現。繼承NSInputStream以從本地文件路徑上傳特定部分的數據
但是,我想知道是否可以有一個NSInputStream指向文件中的一系列數據?
如果要通過將NSInputStream
實例傳遞給NSURLRequest.HTTPBodyStream
來上傳文件,則必須創建NSInputStream
的子類,並且只傳輸要上載的字節。在這裏使用NSFileHandle
不是一種選擇。
創建與NSURLRequest
一起使用的NSInputStream
的子類是相當棘手的,但幸運的是這裏有一個great blog post關於如何完成。
Here you can find a ready to use subclass of NSInputStream
for this purpose。
您可以將ChunkInputStream
與另一個NSInputStream
讀取文件並傳遞開始位置和讀取的字節數。
斯威夫特例如:
let fileInputStream = NSInputStream(fileAtPath: "/tmp/readme")
let inputStream = ChunkInputStream(inputStream: fileInputStream)
inputStream.startPosition = 2097152
inputStream.readMax = 1048576
爲什麼不使用'NSFileHandle'呢? – Mar0ux 2013-05-03 12:43:19
基本上我不想創建幾個大小5MB的NSData實例。它吃了很多的記憶。 – 2013-05-03 12:47:09
然後,您應該在某個串行隊列中一次創建5MB的一部分,例如 – 2013-05-03 12:50:09