我有一个ListBox,它包含并显示各个xml文件。归档文件正在累积,我需要实现删除按钮以永久删除所选的xml文件。
文件存储在名为“Archive”文件夹的文件夹中(请参见屏幕截图) )。
我该如何实施解决方案?我的删除按钮后面有以下代码。代码正在通过删除内存中的记录来工作,但是每次页面加载文件时它都无法删除实际文件。我感谢您的帮助。感谢。
protected void DeleteValues(object sender, EventArgs e)
{
List<ListItem> deletedItems = new List<ListItem>();
foreach (ListItem item in ListBoxArchive.Items)
{
if (item.Selected)
{
deletedItems.Add(item);
}
}
foreach (ListItem item in deletedItems)
{
ListBoxArchive.Items.Remove(item);
}
}
答案 0 :(得分:0)
您需要为File Manipulation添加System.IO。将此方法添加到您的班级
using System.IO
string FolderLocation = @"c:\MyFolder";
public void DeleteItemFile(string FileName){
string fileLPath = Path.Combine(FolderLocation,FileName);
File.Delete(filePath);
}
现在修改你的foreach循环添加这一行。
foreach (ListItem item in deletedItems)
{
ListBoxArchive.Items.Remove(item);
DeleteItemFile(item.ToString());
}
只有当你拥有的ListItem是列表中的exactfilename时,这才有效。
确保ListItem(item)也具有文件扩展名,否则你必须将其连接起来。
答案 1 :(得分:0)
完成此任务需要两个因素。对代码的修改,如下所示:
protected void DeleteValues(object sender, EventArgs e)
{
List<ListItem> deletedItems = new List<ListItem>();
foreach (ListItem item in lbItems.Items)
{
if (item.Selected)
{
deletedItems.Add(item);
}
}
String ArchiveFolderPath = Server.MapPath("/Archive/");
foreach (ListItem item in deletedItems)
{
lbItems.Items.Remove(item);
System.IO.File.Delete(ArchiveFolderPath + item.Text);//assumes item.Text is a valid file name
}
}
您需要做的下一件事是授予Windows帐户对Web服务器上文件夹的写入权限。
虽然这回答了您的编程问题,但我建议您通过一些可能运行PowerShell脚本的计划任务来处理文件管理。
答案 2 :(得分:0)
您可以通过使用单个循环执行此操作:
string BaseFolder = @"folderLocation here";
foreach (ListItem item in ListBoxArchive.Items)
{
if (item.Selected)
{
string fileLPath = Path.Combine(BaseFolder,item.ToString());
File.Delete(filePath);
}
}
//Rebind the List here