我正在尝试在用户文件夹中创建一个文件,并用一些基本文本填充它。看起来很简单,但我不断收到错误:
无法找到路径'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,但在尝试创建/写入文件时失败。
答案 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();
}
}
需要注意的一点是:确保您对要写入的文件夹和文件具有权限。