【问题标题】:FileInfo.Length always show a files total size, not actual current sizeFileInfo.Length 始终显示文件总大小,而不是实际的当前大小
【发布时间】:2011-08-25 13:45:58
【问题描述】:

我正在尝试使用File.Copy([FileName]) 命令监控大型文件复制过程的进度(无需自己手动复制数据字节)。

所以我要做的是获取被复制文件的长度,并将其与目标文件的长度进行比较。这将使我对复制进度有一个很好的了解。

唯一的问题是目标文件上的FileInfo.Length 属性返回被复制文件的总大小,而不是磁盘上文件的实际大小。有没有其他方法可以获取这些数据? 谢谢, 克里斯



EDIT(从下方移动——由 OP 作为答案提交)

我查看了链接,这根本不是我想要的。如果文件很大(复制时间超过 3 秒),我只想显示文件复制的进度。

大多数文件大约需要 1/4 秒,但也有一些是 ~600+MB,需要一些时间才能通过网络复制。

我只需要如何获取目标目录中部分复制文件的实际文件大小。

(由于我在这里没有帐户,所以它不允许我回复您对我的问题的回复,所以它被显示为答案,即使它不是。)

谢谢,克里斯

【问题讨论】:

标签: vb.net-2010 system.io.fileinfo


【解决方案1】:

您可以使用流自己进行复制操作并显示进度:

    Const SOURCE_FILEPATH = "C:\TEMP\GameOfThrones.png"
    Const DEST_FILEPATH = "C:\GameOfThrones.png"

    Const BUFFER_SIZE As Integer = 32767
    If System.IO.File.Exists(DEST_FILEPATH) Then System.IO.File.Delete(DEST_FILEPATH)
    Using inStream As New System.IO.FileStream(SOURCE_FILEPATH, IO.FileMode.Open, IO.FileAccess.Read)
        Dim offset As Integer = 0
        Dim count As Integer = BUFFER_SIZE
        Using outStream As New System.IO.FileStream(DEST_FILEPATH, IO.FileMode.Create, IO.FileAccess.Write)
            Do While offset + count <= inStream.Length AndAlso offset <> inStream.Length
                Dim buffer(count) As Byte
                inStream.Seek(offset, IO.SeekOrigin.Begin)
                inStream.Read(buffer, 0, buffer.Length - 1)
                outStream.Seek(outStream.Length, IO.SeekOrigin.Begin)
                outStream.Write(buffer, 0, buffer.Length - 1)
                offset += count
                If count + offset > inStream.Length Then
                    count = inStream.Length - offset
                Else
                    count = BUFFER_SIZE
                End If
                System.Console.WriteLine((offset / inStream.Length) * 100 & "% complete")
            Loop
        End Using
    End Using

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多