C# 在c中将不同的文件扩展名文件从一个位置移动到另一个位置#
我需要根据文件类型扩展名移动文件,换句话说,源文件包含所有类型的扩展名文件,我需要过滤以下文件类型“.xml”、“.dat”、“.txt”、“.csv”、“.zip”、“.doc”,并且只将这些文件移动到目标位置使用C# 在c中将不同的文件扩展名文件从一个位置移动到另一个位置#,c#,asp.net,linq,linq-to-sql,linq-to-entities,C#,Asp.net,Linq,Linq To Sql,Linq To Entities,我需要根据文件类型扩展名移动文件,换句话说,源文件包含所有类型的扩展名文件,我需要过滤以下文件类型“.xml”、“.dat”、“.txt”、“.csv”、“.zip”、“.doc”,并且只将这些文件移动到目标位置使用Path.GetExtension() 您的代码: var outputDirectory = new DirectoryInfo(@"G:\Local\Syndicationtest"); var sourceDirectory = new DirectoryInfo(@"G:\
Path.GetExtension()
您的代码:
var outputDirectory = new DirectoryInfo(@"G:\Local\Syndicationtest");
var sourceDirectory = new DirectoryInfo(@"G:\Local\Syndicationtest");
var sourceFiles = sourceDirectory.GetFiles();
foreach (var item in sourceFiles)
{
FileHelper.Copy(item, outputDirectory);
FileHelper.Move(FileHelper.Zip(item), new DirectoryInfo(@"G:\Local\Syndicationtest\History"));
}
var outputDirectory=newdirectoryinfo(@“G:\Local\Syndicationtest”);
var sourceDirectory=new DirectoryInfo(@“G:\Local\Syndicationtest”);
FileInfo[]sourceFiles=sourceDirectory.GetFiles();
var扩展=新列表{.xml“,.dat“,.txt“,.csv“,.zip“,.doc”};
foreach(sourceFiles中的FileInfo项)
{
if(扩展名.包含(项目扩展名))
{
复制(项,输出目录);
FileHelper.Move(FileHelper.Zip(item),newdirectoryinfo(@“G:\Local\Syndicationtest\History”);
}
}
如果您想使用LINQ,最好使用Michael Perrenoud的解决方案。那么这一点如何:
var outputDirectory = new DirectoryInfo(@"G:\Local\Syndicationtest");
var sourceDirectory = new DirectoryInfo(@"G:\Local\Syndicationtest");
FileInfo[] sourceFiles = sourceDirectory.GetFiles();
var extensions = new List<string> { ".xml", ".dat", ".txt", ".csv", ".zip", ".doc" };
foreach (FileInfo item in sourceFiles)
{
if(extensions.Contains(item.Extension))
{
FileHelper.Copy(item, outputDirectory);
FileHelper.Move(FileHelper.Zip(item), new DirectoryInfo(@"G:\Local\Syndicationtest\History"));
}
}
var ext=newlist{.xml“,.dat“,.txt“,.csv“,.zip“,.doc”};
var sourceFiles=sourceDirectory.GetFiles()
其中(f=>ext.Contains(f.Extension.ToLower());
这解决了两件事:
DirectoryInfo.GetFiles(stringsearchpattern)
重载时存在的三字符扩展名问题您可以在文件路径中获取
的LastIndex
,并一直读取到最后以获取扩展名
然后可以使用所需的扩展集进行验证
试试这个:
var ext = new List<string> { ".xml", ".dat", ".txt", ".csv", ".zip", ".doc" };
var sourceFiles = sourceDirectory.GetFiles()
.Where(f => ext.Contains(f.Extension.ToLower()));
给你
您需要更改目录名
var outputDirectory = new DirectoryInfo(@"G:\Local\Syndicationtest");
var sourceDirectory = new DirectoryInfo(@"G:\Local\Syndicationtest");
String[] FileExt = new String[] { ".xml", ".dat", ".txt", ".csv", ".zip", ".doc" };
var sourceFiles = sourceDirectory.GetFiles();
foreach (var item in sourceFiles)
{
if ((item.Contains(".")) && (FileExt.Contains(item.Substring(item.LastIndexOf("."), 4))))
{
FileHelper.Copy(item, outputDirectory);
FileHelper.Move(FileHelper.Zip(item), new DirectoryInfo(@"G:\Local\Syndicationtest\History"));
}
}
类程序
{
公共静态字符串OutputDirectry=@“C:DebugCopy”;
公共静态void Main()
{
var fileextensions=新列表
{
“.xml”,
“.dat”,
“.txt”,
“.csv”,
“.zip”,
“.doc”
};
foreach(目录.EnumerateFiles(@“C:Debug”)中的变量路径)
.Where(path=>fileextensions.Contains(path.GetExtension(path.ToLower()))
Copy(path,path.Combine(outputdirectry,path.GetFileName(path));
}
}
if(acceptableExtensions.Contains(item.Extension))//做任何你想做的事
否,使用Path.GetExtension()如果文件扩展名包含的字符数大于或小于3个怎么办<代码>项已经是字符串。感谢您的输入。1.OP只想用3个字符进行检查,这就是为什么我使用了3个字符(感谢您提出使用Path.GetExtension()的建议,我将使用它)2.是项是字符串,我已编辑了我的答案。@Sudhakar如果我们有文件名,如abcd.lll.dat或xxyy.2013.11.12_14.43.7574.csv,那么它将是.dat和.csv,这就是为什么我要使用LastIndexof点运算符,请告诉我是否需要更多。@user2271011,请查看我的编辑。我不习惯使用DirectoryInfo
界面,只是把它弄糊涂了。@user2271011,很高兴我能帮上忙!字符串比较呢?如果分机是另一种情况怎么办?@traemore,打得好。我检查了M$FT代码,他们没有降低它。谢谢好的,您有一个FileInfo
,它有一个扩展名
属性。更容易。:)编辑。
class Program
{
public static string outputDirecotry = @"C:DebugCopy";
public static void Main()
{
var fileExtenstions = new List<string>
{
".xml",
".dat",
".txt",
".csv",
".zip",
".doc"
};
foreach (var path in Directory.EnumerateFiles(@"C:Debug")
.Where(path => fileExtenstions.Contains(Path.GetExtension(path).ToLower())))
File.Copy(path , Path.Combine(outputDirecotry , Path.GetFileName(path)));
}
}