2013-10-31 40 views
0

我的目標是刷新我保存在一個文件夾中的文件,以顯示它上次修改的日期。因爲無刷新它不顯示最後修改日期懸停。所以有什麼辦法刷新文件夾中的文件C#?如何使用c#刷新文件夾中的內容?

任何幫助將非常感激

+1

請顯示您的代碼 - 如何獲取懸停時的最後修改日期? –

+0

雖然懸停在文件夾中的文件,它顯示錯誤的修改時間。只有刷新後顯示正確的時間 – AbinZZ

+0

您的問題如何與C#和編程有關? –

回答

0

您可以使用

FileInfo.LastWriteTime 
在一個循環

t時間。

MSDN

0

如果你只是希望刷新directoryview你可以做Directory.GetFiles()

1

可以使用SHChangeNotify功能來告訴一個文件已更改的探險家。

public void NotifyItemChanged(string fullPath) 
    { 
     NativeMethods.SHChangeNotify(
      SHChangeNotifyEvents.UpdateItem, 
      SHChangeNotifyFlags.PathW | SHChangeNotifyFlags.NotifyRecursive, 
      fullPath, 
      null); 
    } 

    [DllImport("shell32.dll", CharSet = CharSet.Unicode)] 
    public static extern void SHChangeNotify(SHChangeNotifyEvents eventID, SHChangeNotifyFlags flags, string path, string path2); 

[Flags] 
public enum SHChangeNotifyEvents : uint 
{ 
    RenameItem = 0x00000001, 
    Create = 0x00000002, 
    Delete = 0x00000004, 
    MkDir = 0x00000008, 
    RmDir = 0x00000010, 
    MediaInserted = 0x00000020, 
    MediaRemoved = 0x00000040, 
    DriveRemoved = 0x00000080, 
    DriveAdd = 0x00000100, 
    NetShare = 0x00000200, 
    NetUnshare = 0x00000400, 
    Attributes = 0x00000800, 
    UpdateDir = 0x00001000, 
    UpdateItem = 0x00002000, 
    ServerDisconnect = 0x00004000, 
    UpdateImage = 0x00008000, 
    DriveAddGui = 0x00010000, 
    RenameFolder = 0x00020000, 
    FreeSpace = 0x00040000, 
    ExtendedEvent = 0x04000000, 
    AssocChanged = 0x08000000, 
    DiskEvents = 0x0002381F, 
    GlobalEvents = 0x0C0581E0, 
    AllEvents = 0x7FFFFFFF, 
    Interrupt = 0x80000000 
} 

public enum SHChangeNotifyFlags : uint 
{ 
    IdList = 0x0000, 
    PathA = 0x0001, 
    PrinterA = 0x0002, 
    Dword = 0x0003, 
    PathW = 0x0005, 
    PrinterW = 0x0006, 
    Type = 0x00FF, 
    Flush = 0x1000, 
    FlushNoWait = 0x3000, 
    NotifyRecursive = 0x10000 
} 

注意:在Windows XP中,這將刷新整個文件夾,而不僅僅是指定的文件。

+0

我已經嘗試過這種格式作爲文件路徑(「E:\\ FolderName」)。但刷新不起作用 – AbinZZ

相關問題