C# 为什么可以';我不能写入.txt文件吗?
我想写一个txt文件,但我得到了 对路径的访问被拒绝 每一次。我试过谷歌搜索的很多建议。它们都不起作用:比如以管理员的身份开始,给不同的用户提供完全的访问权限,等等 test.txt位于项目的根文件夹中,例如:“MyProject/test.txt” 代码如下:C# 为什么可以';我不能写入.txt文件吗?,c#,uwp,C#,Uwp,我想写一个txt文件,但我得到了 对路径的访问被拒绝 每一次。我试过谷歌搜索的很多建议。它们都不起作用:比如以管理员的身份开始,给不同的用户提供完全的访问权限,等等 test.txt位于项目的根文件夹中,例如:“MyProject/test.txt” 代码如下: private void LikeIt() { Task.Run(() => { using (System.IO.StreamWriter file = new Sy
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;
}
private void LikeIt()
{
Task.Run(()=>
{
使用(System.IO.StreamWriter)文件=
新的System.IO.StreamWriter(File.OpenWrite(“test.txt”))
{
foreach(ReadFile()中的var行)
{
//如果该行不包含相同的ID,请将该行写入文件。
如果(!line.Contains(App.Moviess.Filmerna[index].id.ToString())
{
file.WriteLine(App.Moviess.Filmerna[index].id.ToString()+“\r\n”);
}
}
}
});
}
私有列表读取文件()
{
列表行=System.IO.File.ReadAllLines(@“C:\Users\Tomas\Desktop\MovieStarz\MovieStarz\WriteText.txt”).ToList();
回流线;
}
您应该使用指令在中打开文件。如果不这样做,您的文件将保持打开状态,并且在以下情况下无法访问:
using(var fs = File.OpenWrite("test.txt"))
using(var file = new System.IO.StreamWriter(fs))
{
// your code here
}
可能您要编写的文件已被其他程序打开。所以您需要设置FileShare属性
using (Stream fs = System.IO.File.Open("test.txt",
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.ReadWrite))
{
using(var file = new System.IO.StreamWriter(fs))
{
...
}
}
在这里:
这段代码打开文件,读取内容并关闭它。然后打开另一个文件,写入所需内容并关闭它
打开和关闭是自动完成的,您从未同时打开过两个文件
如果这不起作用:
- 您的文件可能被其他进程锁定。(尝试重新启动电脑)
- 您的程序没有访问该文件的权限(请尝试将该文件放在C:\Users之外)
- 由于是异步执行的,因此必须保证两个线程不会同时访问该文件:
private static readonly object fileLock = new object();
private void LikeIt()
{
Task.Run(() =>
{
lock(fileLock){
//do the stuff here
}
});
}
您是否以管理员身份登录到windows?随机向下投票lol-问题没问题。可能是某个讨厌windows的孩子:)关于问题:您是否查看了异常详细信息?从那里没有洞察?你是否尝试添加一些共享模式只是为了看看它是否会改变行为?我想说,由于缺乏细节,它被否决了。问题,代码。希望有人为他们调试代码。您应该在问题中添加异常详细信息,还应包括您已经尝试过的内容。我从问题文本中推测的openWrite()
行。@Jeremythonpson:要读取的文件是另一个文件。FileShare.read可能足够了-如果另一个应用以独占方式锁定。。。没关系。我得到了“StreamWriter不能像一种方法一样使用”他忘了new
我想-可能是过量的F编程,嗯?:)哦,为什么我没有看到:)一些关于为什么和更重要的是何时使用(IDisposable)的解释会很好。当然。也许还有一些来自非托管代码的示例?垃圾收集讲座也会很好。它会帮助人们理解为什么你建议使用,而不是每个人都有相同的知识…@Newbie1337:我的答案中有哪些部分帮助了你?restartPC,对源文件和目标文件使用var,以及锁。。在那之后,它起了作用……)苏,谢谢!
private static readonly object fileLock = new object();
private void LikeIt()
{
Task.Run(() =>
{
lock(fileLock){
//do the stuff here
}
});
}