我想写一个txt文件,但是我得到了
拒绝访问路径
每一次。我尝试了谷歌搜索的许多建议。它们都不起作用:比如以管理员身份启动,提供对不同用户的完全访问权等等。
test.txt位于项目的根文件夹中:" MyProject / test.txt" ..
这是代码:
private void LikeIt()
{
Task.Run(() =>
{
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(File.OpenWrite("test.txt")))
{
foreach (var line in ReadFile())
{
// If the line doesn't contain the same ID, write the line to the file.
if (!line.Contains(App.Moviess.Filmerna[index].id.ToString()))
{
file.WriteLine(App.Moviess.Filmerna[index].id.ToString() + "\r\n");
}
}
}
});
}
private List<string> ReadFile()
{
List<string> lines = System.IO.File.ReadAllLines(@"C:\Users\Tomas\Desktop\MovieStarz\MovieStarz\WriteText.txt").ToList();
return lines;
}
答案 0 :(得分:3)
下面:
var sourceFile = "text.txt";
var targetFile = @"C:\Users\Tomas\Desktop\MovieStarz\MovieStarz\WriteText.txt";
var id = App.Moviess.Filmerna[index].id.ToString();
var lines = File.ReadAllLines(sourceFile)
.Where(l => l.Contains(id))
.ToArray();
File.AppendAllLines(targetFile, lines);
此代码打开文件,读取内容并关闭它。然后打开另一个文件,写下必要的内容并关闭它。
自动完成打开和关闭,您从未打开过两个文件。
如果这不起作用:
因为您是异步执行,所以必须保证两个线程不会同时访问该文件:
private static readonly object fileLock = new object();
private void LikeIt()
{
Task.Run(() =>
{
lock(fileLock){
//do the stuff here
}
});
}
答案 1 :(得分:0)
也许某个其他程序已经打开了你想写的文件。所以你需要设置FileShare属性,
using (Stream fs = System.IO.File.Open("test.txt",
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.ReadWrite))
{
using(var file = new System.IO.StreamWriter(fs))
{
...
}
}
答案 2 :(得分:-3)
您应该在using
指令中打开文件。如果不这样做,您的文件将保持打开状态,并且在以下情况后无法访问:
using(var fs = File.OpenWrite("test.txt"))
using(var file = new System.IO.StreamWriter(fs))
{
// your code here
}