簡體   English   中英

如何判斷文件是否已完成在驅動器上的發布

[英]How To Tell If A File Has Completed Posting On A Drive

我有一些代碼可以告訴我驅動器上是否存在文件,但是不能告訴該文件是否已完成將文件放置到目錄中的操作。因此,當我使用代碼告訴我文件是否存在以及文件大小時, ,它將告訴我它的存在並為我提供一個特定的大小,但是第二次運行它時,我得到了一個不同的文件大小答案,因為該文件仍在發布並且數據正在發布到該文件,從而導致文件增大。

那么,是否有任何方法可以判斷文件是否已完成發布? 我可以使用的文件的任何屬性。 還要注意,有人建議將VBA與Windows API一起使用。 我在網上進行了檢查,但似乎沒有滿足我需求的任何東西。 任何幫助表示贊賞!

我正在使用VBA,這是我得到的代碼,它們為我提供了上面提到的數據。 另外,此時,我不知道部門使用了哪些進程。 生成這些文件。 希望我不需要知道沒有該信息就能找到所需的方法! 感謝您的協助!

Public Sub sub_chk_files2()

    Dim obj_fs As Object
    Dim obj_folder As Object
    Dim obj_files As Object
    Dim obj_f1 As Object
    Dim str_fp As String
    Dim str_fqfp As String
    Dim int_count_files As Integer
    Dim str_import_file_name As String
    Dim lng_file_size As Long

    str_fp = "C:\01_reporting\"

    Set obj_fs = CreateObject("scripting.filesystemobject")
    Set obj_folder = obj_fs.getfolder(str_fp)
    Set obj_files = obj_folder.files

    For Each obj_f1 In obj_files


        If obj_f1.Name = "data2.csv" Then

            str_import_file_name = obj_f1.Name
            str_fqfp = str_fp & str_import_file_name
            lng_file_size = FileLen(str_fqfp) / 1000

            MsgBox "File " & str_import_file_name & " was created on " & obj_f1.DateCreated & " File size = " & lng_file_size & " File Modified on " & obj_f1.DatelastModified

    End If
Next

End Sub

您可能在Google上找不到答案,因為您使用的是不尋常的單詞。

文件不會“發布”到磁盤。 進程寫入文件。

查找是否有其他進程正在寫入的最簡單方法是獲取獨占寫入權限。 Windows具有強制鎖定。 因此,如果正在寫入另一個進程,則CreateFile(..., GENERIC_WRITE, FILE_SHARE_READ, )將不會成功,但是如果另一個進程正在讀取,則它可以成功。

暫無
暫無

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

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