兄弟我们聊过的,呵呵,我测试了下可以做出来了,FileSystemWathceR 类可以帮到你,先把电脑上的盘符全部遍历出来,用这个类做跟硬盘盘符一样多的数组,把他们的事件代理全部关联在一个方法上面,产生的事件全部存档到一个txt文件中,你就可以根据名字来看这个文件是否都过,不过说实话这个是笨方法,我实例的给你点代码
using System;
using SystemCollectionsGeneric;
using SystemText;
using SystemIO;
using SystemDiagnostics;
namespace WindowsApplication文件监控
{
class Program
{
static void Main(string[] args)
{
Run();
}
public static void Run()
{
// Create a new FileSystemWatcher and set its properties
FileSystemWatcher watcher = new FileSystemWatcher();
//watcherPath = args[1];
watcherPath = "c:\\";
// 不能只监控C盘,你要监控你所有的盘符,先遍历出来在弄个数组相信你应该会的
watcherIncludeSubdirectories = true;
/ Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories /
watcherNotifyFilter = NotifyFiltersLastAccess | NotifyFiltersLastWrite
| NotifyFiltersFileName | NotifyFiltersDirectoryName;
//这里是监视的 *** 作类型,应该看的懂的
// Only watch text files
watcherFilter = "txt";
//监视的文件类型
// Add event handlers
watcherChanged += new FileSystemEventHandler(OnChanged);
watcherCreated += new FileSystemEventHandler(OnChanged);
watcherDeleted += new FileSystemEventHandler(OnChanged);
watcherRenamed += new RenamedEventHandler(OnRenamed);
// 这里是关联事件的代理
// Begin watching
watcherEnableRaisingEvents = true;
// 下面是程序结束的条件说都不用说了
// Wait for the user to quit the program
ConsoleWriteLine("Press \'q\' to quit the sample");
while (ConsoleRead() != 'q') ;
}
// Define the event handlers
private static void OnChanged(object source, FileSystemEventArgs e)
{ // 比如比如文件发生改变了,你可以弄个时间是吧好知道
// Specify what is done when a file is changed, created, or deleted
ConsoleWriteLine("File: " + eFullPath + " " + eChangeType);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
// Specify what is done when a file is renamed
ConsoleWriteLine("File: {0} renamed to {1}", eOldFullPath, eFullPath);
}
private static void Created(Object source, FileSystemEventArgs e)
{
ConsoleWriteLine("File: {0} renamed to {1}", eName, eFullPath);
}
// 上面三个方法是代理关联的其实是四个我只写了三个够了 看了这个相信你应该能做出来了,呵呵
这个方法最主要的缺点是如果他复制到优盘那就麻烦了呵呵,相信你应该明白了吧
}
}
string fileDir = EnvironmentCurrentDirectory;
ConsoleWriteLine("当前程序目录:"+fileDir);
//一个文件目录
string filePath = "C:\\bin\\files\\testxml";
ConsoleWriteLine("该文件的目录:"+filePath); string str = "获取文件的全路径:" + PathGetFullPath(filePath); //-->C:\bin\files\testxml ConsoleWriteLine(str);
str = "获取文件所在的目录:" + PathGetDirectoryName(filePath); //-->C:\bin\files ConsoleWriteLine(str);
str = "获取文件的名称含有后缀:" + PathGetFileName(filePath); //-->testxml ConsoleWriteLine(str);
str = "获取文件的名称没有后缀:" + PathGetFileNameWithoutExtension(filePath); //-->test ConsoleWriteLine(str);
str = "获取路径的后缀扩展名称:" + PathGetExtension(filePath); //-->xml ConsoleWriteLine(str);
str = "获取路径的根目录:" + PathGetPathRoot(filePath); //-->C:\ ConsoleWriteLine(str);
ConsoleReadKey();
既然文件名不知道是什么,用directorygetfiles去取得该目录下的文件,就可以得到文件名了
SystemIODirectory
GetFiles(String) 返回指定目录中文件的名称(包括其路径)。
例子:
string targetDirectory = "c:\\windows"; //例如
string [] fileEntries = DirectoryGetFiles(targetDirectory);
foreach(string fileName in fileEntries)
这里就可以得到该文件名称了
C风格:
char p = strrchr(pathc_str(), '/')p是path里最后一个'/'的地址。然后
string s(p + 1);,s就是"worldshp"了。
C++风格:
int pos = pathfind_last_of('/');pos就是最后一个'/'的下标。
然后
string s(pathsubstr(pos + 1) );s就是"worldshp"了。
以上就是关于C#中如何获得被复制文件的文件名和路径全部的内容,包括:C#中如何获得被复制文件的文件名和路径、WPF,怎样分别获取文件路径,文件名、c# 已知路径如何获取文件名(不知文件名是什么)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)