今天编程执行远程文件拷贝遇到问题,文件名非法问题,研究了一下,原来windows下对于文件名的全名(full name)是有严格限制的。
1. 非法字符限制
诸如"/", "/"等等都是不允许的。
2. 文件全名长度限制
文件全名最长为260字符长度, Directory的最大长度为248长度。所以你的Directory路径越长越深,那么留给最后文件名字的长度就越小。
另外,目前C#.net 2.0好像不提供对于文件重命名的操作的API,所以可以先执行File.Move(string fileName), 然后执行File.Delete(string fileName),实现重命名效果。
另外,Application.DoEvents(), 当运行 Windows 窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代码处理事件时,应用程序并不响应。例如,当将另一窗口拖到该窗口前面时,该窗口不重新绘制。如果在代码中调用 DoEvents,则您的应用程序可以处理其他事件。例如,如果您有向ListBox添加数据的窗体,并将 DoEvents 添加到代码中,那么当将另一窗口拖到您的窗体上时,该窗体将重新绘制。如果从代码中移除 DoEvents,那么在按钮的单击事件处理程序执行结束以前,您的窗体不会重新绘制。