在form1的顶部:
StreamWriter recentfiles;
string[] lines;
string line = null;
int line_number = 0;
string RecentFiles = "";
在构造函数中:
RecentFiles = @"e:\RecentFiles.txt";
if (!File.Exists(RecentFiles))
{
recentfiles = new StreamWriter(RecentFiles);
recentfiles.Close();
}
else
{
lines = File.ReadAllLines(RecentFiles);
items = File
.ReadLines(@"e:\RecentFiles.txt")
.Select(line => new ToolStripMenuItem()
{
Text = line
})
.ToArray();
}
for (int i = 0; i < items.Length; i++)
{
if (!File.Exists(items[i].Text))
{
using (StreamReader reader = new StreamReader(RecentFiles))
{
using (StreamWriter writer = new StreamWriter(RecentFiles))
{
while ((line = reader.ReadLine()) != null)
{
line_number++;
if (line_number == i)
continue;
writer.WriteLine(line);
}
}
}
}
}
在文本文件RecentFiles中,例如我在第一行:
d:\test.txt
在第二行:
e:\test\test.txt
我想要做的是,如果文本文件中的某个文件不存在,请将其从RecentFiles.txt中删除
但我在线上有例外:
using (StreamWriter writer = new StreamWriter(RecentFiles))
该进程无法访问文件'e:\ RecentFiles.txt',因为它正由另一个进程使用
我该如何解决?
答案 0 :(得分:2)
让它变得更好:
<%= options_from_collection_for_select(Product.all, 'id', 'category_name') %>
答案 1 :(得分:0)
在我看来,这可以满足您的需求:
File.WriteAllLines(RecentFiles,
File.ReadAllLines(RecentFiles)
.Where(f => File.Exists(f)));