繁体   English   中英

错误:帮助D:System.IO.IOException:该进程无法访问文件,因为它正在被另一个进程使用

[英]Error: Help D: System.IO.IOException: The process cannot access the file because it is being used by another process

代码在这里._。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication1
{
class Program
{

    static void Main(string[] args)
    {
        System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Public\\Usernames.txt");
        file.WriteLine();
        file.Close();
        int userType = 0;
        System.IO.StreamReader fileUsername =
            new System.IO.StreamReader("C:\\Users\\Public\\Usernames.txt");
        file.Close();
        string retrievedUsername = fileUsername.ReadToEnd();
        file.Close();



        Console.WriteLine("Please note that this is a prototype, passwords are not hashed/encrypted ^_^");
        Console.WriteLine("Welcome to the meData service! Ver. 0.01 Beta, made by mechron");
        Console.WriteLine("Please enter your username below or type register to register a new account on this device");
        string loginUsername = Console.ReadLine();
      if (loginUsername == retrievedUsername)
   {

          Console.WriteLine("Welcome back user!");
           userType = 1;
   }
      else
      {
          if (loginUsername == "register")
          {

              Console.WriteLine("Choose your username!");
              string registeredUsername = Console.ReadLine();
              System.IO.StreamWriter files = new System.IO.StreamWriter("C:\\Users\\Public\\Usernames.txt");
              file.WriteLine(registeredUsername);
              file.Close();
          }
          else
          {
              Console.WriteLine("Error, command not recognized");}

      }


   }


    }
}

我上面的代码^ ^ Erm ...好吧...我遇到了麻烦.... System.IO.IOException:该进程无法访问该文件,因为当另一个文件正在被我使用时,该文件一直在弹出这行System.IO.StreamWriter文件=新的System.IO.StreamWriter(“ C:\\ Users \\ Public \\ Usernames.txt”); ; ; 有人能帮我吗? 提前致谢!

以下代码不会关闭阅读器,而是再次关闭编写器。 即使有效,它也会在您实际阅读之前关闭阅读器。

System.IO.StreamReader fileUsername = new System.IO.StreamReader("C:\\Users\\Public\\Usernames.txt");
file.Close();
string retrievedUsername = fileUsername.ReadToEnd();
file.Close();

您应该使代码看起来像这样:

using (System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Public\\Usernames.txt"))
{
    file.WriteLine();
}

int userType = 0;
string retrievedUsername = String.Empty;

using (System.IO.StreamReader fileUsername = new System.IO.StreamReader("C:\\Users\\Public\\Usernames.txt"))
{
    retrievedUsername = fileUsername.ReadToEnd();
}

以下代码也存在缺陷:

System.IO.StreamWriter files = new System.IO.StreamWriter("C:\\Users\\Public\\Usernames.txt");
file.WriteLine(registeredUsername);
file.Close();

看到错误了吗? 您正在打开(而不是关闭!)一个名为filesStreamWriter ,但是您正在尝试编写并试图关闭file 大错。

也可以这样修复:

using (System.IO.StreamWriter files = new System.IO.StreamWriter("C:\\Users\\Public\\Usernames.txt"))
{
    files.WriteLine(registeredUsername);
}

您永远不会关闭StreamReader对象fileUsername 阅读完文件后,可以调用fileUsername.Close() ,但是最好使用using语句。

 using (StreamReader fileUserName = new StreamReader("C:\\Users\\Public\\Usernames.txt")) 
 {

 }

这样,对象在完成操作后将正确关闭。

您尚未关闭名为fileUsername StreamReader对象

static void Main(string[] args)
    {
        System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Public\\Usernames.txt");
        file.WriteLine();
        file.Close();
        int userType = 0;
        System.IO.StreamReader fileUsername =
            new System.IO.StreamReader("C:\\Users\\Public\\Usernames.txt");
        file.Close();
        string retrievedUsername = fileUsername.ReadToEnd();
        file.Close();
        fileUsername.Close();// <--- This line



        Console.WriteLine("Please note that this is a prototype, passwords are not hashed/encrypted ^_^");
        Console.WriteLine("Welcome to the meData service! Ver. 0.01 Beta, made by mechron");
        Console.WriteLine("Please enter your username below or type register to register a new account on this device");
        string loginUsername = Console.ReadLine();
      if (loginUsername == retrievedUsername)
   {

          Console.WriteLine("Welcome back user!");
           userType = 1;
   }
      else
      {
          if (loginUsername == "register")
          {

              Console.WriteLine("Choose your username!");
              string registeredUsername = Console.ReadLine();
              System.IO.StreamWriter files = new System.IO.StreamWriter("C:\\Users\\Public\\Usernames.txt");
              file.WriteLine(registeredUsername);
              file.Close();
          }
          else
          {
              Console.WriteLine("Error, command not recognized");}

      }


   }

您错过了fileUsername StreamReader的关闭,但是我将更改代码如下

string loginUsername = Console.ReadLine();
string readText = File.ReadAllText(path);
if(readText==loginUsername)
{
   Console.WriteLine("Welcome back user!");
}else if(loginUsername == "register")
{

   Console.WriteLine("Choose your username!");
   string registeredUsername = Console.ReadLine();
   File.WriteAllText(path,registeredUsername);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM