Эффективное копирование нескольких файлов

let indexPath : IndexPath = 
    PlaylistController.shared.playlists.count == 1 ?
        IndexPath(item: sender.tag+1, section: 0) :
        IndexPath(item: sender.tag-1, section: 0)

Или, яснее, я думаю:

let item = PlaylistController.shared.playlists.count == 1 ? sender.tag+1 :sender.tag-1
let indexPath = IndexPath(item:item, section:0)
10
задан Grzenio 22 October 2008 в 08:17
поделиться

3 ответа

Я не могу думать о более эффективном пути, чем Файл. Копия, это переходит непосредственно к ОС.

С другой стороны, если бы это занимает у этого много времени, я настоятельно рекомендовал бы показать, что диалоговое окно прогресса - как SHFileOperation делает это для Вас. По крайней мере, Ваши пользователи будут знать то, что происходит.

8
ответ дан 4 December 2019 в 01:32
поделиться

Вы могли использовать операционную систему для перемещения файлов. Это - то, что делают инструменты как WinMerge. Вы нажимаете кнопку "копии" в своем приложении, и это открывается поле прогресса Windows, как будто Вы использовали Проводник для расположения копии. Этот поток описывает это.

1
ответ дан 4 December 2019 в 01:32
поделиться

Я недавно реализовал свои копии файла с помощью filestreams в.NET VB:

fsSource = New FileStream(backupPath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None, 1024, FileOptions.WriteThrough)
fsDest = New FileStream(restorationPath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None, 1024, FileOptions.WriteThrough)
TransferData(fsSource, fsDest, 1048576)

    Private Sub TransferData(ByVal FromStream As IO.Stream, ByVal ToStream As IO.Stream, ByVal BufferSize As Integer)
        Dim buffer(BufferSize - 1) As Byte

        Do While IsCancelled = False 'Do While True
            Dim bytesRead As Integer = FromStream.Read(buffer, 0, buffer.Length)
            If bytesRead = 0 Then Exit Do
            ToStream.Write(buffer, 0, bytesRead)
            sizeCopied += bytesRead
        Loop
    End Sub

Это кажется быстрым и очень простой способ обновить progressbar (с sizeCopied) и отменить передачу файлов в случае необходимости (с IsCancelled).

1
ответ дан 4 December 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: