在c#中创建文件和文件夹

时间:2013-04-05 15:44:40

标签: c# asp.net .net

我正在尝试在用户文件夹中创建一个文件,并用一些基本文本填充它。看起来很简单,但我不断收到错误:

  

无法找到路径'C:\ websites \ admin \ upload \ users \ testuserID \ testuserIDSampleRecord.txt'的一部分。“} System.Exception {System.IO.DirectoryNotFoundException}

我的网站位于:c:\websites\testsite\下,因此完整路径应为:

c:/websites/testsite/admin/upload/users/

IIS localhost设置为指向c:/websites/所以当我运行它时,我输入localhost/testsite来获取它

这就是我所拥有的:

 try
            {
           string SampleCaseText =  BuildTextRecord();
           string username = (string)Session["userid"];
           string folderPath = "/testsite/admin/upload/users/" + username;
           bool IsExists = System.IO.Directory.Exists(Server.MapPath(folderPath));

            if(!IsExists)
                System.IO.Directory.CreateDirectory(Server.MapPath(folderPath));

            System.IO.File.Create(folderPath + "/" + username + "SampleRecord.txt");


            File.WriteAllText(Path.Combine(folderPath, username + "SampleRecord.txt"), SampleCaseText);


            }

它在正确的位置创建了新文件夹testuserID,但在尝试创建/写入文件时失败。

2 个答案:

答案 0 :(得分:1)

我发现有一些错误,可能造成麻烦......

首先,不要使用网络/文件夹分隔符,而是使用窗口\

其次,你没有在你应该使用的所有位置使用Server.MapPath ...导致使用网络相对路径而不是本地窗口路径。

尝试这样的事情,我在开始时将文件夹转换为Windows路径,并将转换后的userFilename放入其自己的变量中,然后使用它...

string folderPath = Server.MapPath("/testsite/admin/upload/users/" + username);
bool IsExists = System.IO.Directory.Exists(folderPath);
if(!IsExists)
    System.IO.Directory.CreateDirectory(folderPath);

string userFilename = Path.Combine(folderPath, username + "SampleRecord.txt");
System.IO.File.Create(userFilename);
File.WriteAllText(userFilename, SampleCaseText);

答案 1 :(得分:0)

这可能有所帮助 - 使其更容易一些我没有包含创建文件或文件夹的代码,而只是抓取现有文件,打开它并写入它。

希望这会给出一些方向,你可以从那里开始。

private void Error(string error)
    {
        var dir= new DirectoryInfo(@"yourpathhere");
        var fi = new FileInfo(Path.Combine(dir.FullName, "errors.txt"));

        using (FileStream fs = fi.OpenWrite())
        {
            StreamWriter sw = new StreamWriter(fs);
            sw.Write(error);
            sw.Close();
            sw.Dispose();
        }

    }

需要注意的一点是:确保您对要写入的文件夹和文件具有权限。