对文件及文件夹操作总结

对文件及文件夹操作总结

2023年7月6日发(作者:)

对⽂件及⽂件夹操作总结项⽬中有新的需求,⽤Tree来显⽰远程服务器相应磁盘的所有⽬录。并对选定的⽂件或者⽂件夹进⾏操作。对于如何连接远程服务器并读取⽬录信息并⽤Tree显⽰不是这次总结的重点。对⽂件或者⽂件夹的操作包括新建,复制,剪切,删除(这⾥包括永久删除和删除到回收站)。等等,不是已经有File类和Directory类⾥⾯的好多静态⽅法可以实现上⾯的功能吗?对,上⾯提到的静态⽅法的确已经很⼤程度的满⾜了我们的需求,但是。。。1. 删除操作没有提供显⽰的确认(当然您可以⾃⼰确认),⽽且该删除操作是永久 删除。

2. 剪切(也就是对于的Move⽅法)只能是同⼀磁盘下⾯的操作,不能跨盘Move(对于⽂件夹⽽⾔)

3. 对于复制剪切或者删除多个⽂件不能显⽰进度条(像系统⼀样的进度条)基于上⾯的原因我选择了使⽤⾥⾯的API--- ,它包含4个操作:FO_COPY,FO_DELETE,FO_MOVE,FO_RENAME,您可以看来了解。对于基本的操作不⽤多说,这⾥只是说⽤到的与C#的IO类库不⽤的⽤法。1. 删除⽂件的时候确认操作:SHFILEOPSTRUCT⾥⾯的成员fFlags默认情况下会有确认操作的提⽰框,如果您不想要提⽰框,可以 = FOF_NOCONFIRMATION;2. 删除到回收站和永久删除: = FOF_ALLOWUNDO,顾名思义,允许撤销的话将删除到回收站,否则将永久删除。3. 操作⽂件或者⽂件夹的时候显⽰进度条: = FOF_SIMPLEPROGRESS4. 对于要删除的⽂件或者⽂件夹使⽤“00”结束,即"D:New Text 00"5. 如果要操作多个⽂件或者⽂件夹 ,不同的路径⽤“0”间隔,即"D:New Text 0D:New Folder00" 对于fFlags还有很多,您可以看了解。⽰例代码如下: ⽰例 1 public static class FileEx 2 { 3 [StructLayout(tial, CharSet = , Pack = 1 )] 4

5 public struct SHFILEOPSTRUCT 6 { 7

8 public IntPtr hwnd; 9

10 [MarshalAs(UnmanagedType.U4)] 11 public int wFunc; 12

13 public string pFrom; 14

15 public string pTo; 16

17 public short fFlags; 18

19 [MarshalAs()] 20 public bool fAnyOperationsAborted; 21

22 public IntPtr hNameMappings; 23

24 public string lpszProgressTitle; 25

26 } 27

28 [DllImport( " " , CharSet = )] 29

30 static extern int SHFileOperation( ref SHFILEOPSTRUCT FileOp); 31

32 const int FO_RENAME = 4 ; 33

34 const int FO_DELETE = 3 ; 35

36 const int FO_COPY = 2 ; 37

38 const int FO_MOVE = 1 ; 39

40 const int FOF_ALLOWUNDO = 0x40 ; 41

42 const int FOF_NOCONFIRMATION = 0x10 ; // Don't prompt the user.;

43

44 const int FOF_SIMPLEPROGRESS = 0x100 ; 45

46 public static void SendToRecyclyBin( string path) 47 { 48

49 SHFILEOPSTRUCT shf = new SHFILEOPSTRUCT(); 50

51 = FO_DELETE; 52

53 = FOF_ALLOWUNDO; // | FOF_NOCONFIRMATION;

54

55 = path; 56

57 // 返回0表⽰操作成功

58 SHFileOperation( ref shf); 59

60 } 61

62 public static bool Copy( string from, string to) 63 { 64 SHFILEOPSTRUCT shf = new SHFILEOPSTRUCT(); 65

66 = FO_COPY; 67

68 = FOF_ALLOWUNDO; 69

70 = from; 71

72 = to; 73

74 return SHFileOperation( ref shf) == 0 ; 75

76 } 77

78 public static bool Move( string from, string to) 79 { 80

81 SHFILEOPSTRUCT shf = new SHFILEOPSTRUCT(); 82

83 = FO_MOVE; 84

85 = FOF_ALLOWUNDO; 86

87 = from; 88

89 = to; 90

91 return SHFileOperation( ref shf) == 0 ; 92

93 } 94

95 public static bool RENAME( string from, string to) 96 { 97

98 SHFILEOPSTRUCT shf = new SHFILEOPSTRUCT(); 99

100 = FO_RENAME;101

102 = FOF_ALLOWUNDO;103

104 = from;105

106 = to;107

108 return SHFileOperation( ref shf) == 0 ;109

110 }111 }

只是总结⽽已。。。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688598631a153681.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信