![](/img/trans.png)
[英]How to add/insert files such as pdf, xls etc. to mysql database using c# form application
[英]Excluding text files etc. from a backup application C#
private void btn_Backup_Click(object sender, EventArgs e)
{
List<DirectoryInfo> SourceDir = this.lbox_Sources.Items.Cast<DirectoryInfo>().ToList();
List<DirectoryInfo> TargetDir = this.lbox_Targets.Items.Cast<DirectoryInfo>().ToList();
foreach (DirectoryInfo sourcedir in SourceDir)
{
foreach (DirectoryInfo targetdir in TargetDir)
{
string dateString = DateTime.Now.ToString("MM-dd-yyyy_H.mm.ss");
string LogFileName = @"BackupLog_" + sourcedir.Name + @"_" + dateString + @".log";
string[] lines = { dateString + "\t" + sourcedir.FullName + "\t" + targetdir.FullName + "\t" + "COMPLETED" };
if (this.checkbox_zipfiles.Checked == true)
{
System.IO.Compression.ZipFile.CreateFromDirectory(sourcedir.FullName, targetdir.FullName + @"\BACKUP_" + sourcedir.Name + @"_" + dateString + @".zip");
System.IO.File.WriteAllLines(tbox_LogFiles.Text + @"\" + LogFileName, lines);
}
else
{
foreach (var file in sourcedir.GetFiles())
{
Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(sourcedir.FullName, targetdir.FullName, true);
System.IO.File.WriteAllLines(tbox_LogFiles.Text + @"\" + LogFileName, lines);
}
}
}
}
}
我需要從備份中排除某些文件(例如.txt .docx),我在表單上使用列表添加了這些例外。 我還需要排除某些文件和文件夾,但是如果我知道該怎么做,我想可以這樣做。
private void btn_AddFileTypeException_Click(object sender, EventArgs e)
{
Form_FileTypeExceptions frm = new Form_FileTypeExceptions(new FileException());
if (frm.ShowDialog() == DialogResult.OK)
{
this.lbox_FileTypeExceptions.Items.Add(frm.Exception);
}
}
有什么想法嗎?
在您要設置要排除的擴展名的表單中,填寫包含要跳過的擴展名的字符串列表,如下所示:
List<string> extensionsToSkip = new List<string>();
extensionsToSkip.Add(".txt");
extensionsToSkip.Add(".docx");
//etc...
在您的內部循環中,將foreach
循環從
foreach (var file in sourcedir.GetFiles())
進入這個
foreach (var file in sourcedir.GetFiles()
.Where(f => !extensionsToSkip.Contains(f.Extension)).ToList())
如您所見,當您使用GetFiles
收集文件時,它將被過濾以排除extensionsToSkip
列表中指定的extensionsToSkip
。
在上述循環之前,通過觀察兩個列表(僅用於測試)來測試文件數是否正確:
var originalList = sourcedir.GetFiles();
var filteredList = sourcedir.GetFiles().Where(f => !extensionsToSkip.Contains(f.Extension)).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.