创建文件并将其保存到目录

时间:2012-08-11 00:40:30

标签: c# asp.net

我正在使用字符串构建器从以下目录中读取多个文件:

StringBuilder sb = new StringBuilder();

sb.Append(System.IO.File.ReadAllText(
       HttpContext.Current.Server.MapPath("~\\Scripts\\File1.js")));

sb.Append(System.IO.File.ReadAllText(
       HttpContext.Current.Server.MapPath("~\\Scripts\\File2.js")));

var TheFile = sb.ToString();

现在我想将这个sb保存在名为MyFile.js的文件的\ Script目录中。我看到了几种可用的方法,但我不确定选择哪种方法。

我该怎么做?

感谢。

3 个答案:

答案 0 :(得分:3)

Server.MapPath()不读取文件,它只是根据服务器的相对路径为您提供正确的绝对路径。如果你想读入文件并将它们写入一个文件,那么尝试这样的事情,

string filenameA = HttpContext.Current.Server.MapPath("~\\Scripts\\File1.js"));
string filenameB = HttpContext.Current.Server.MapPath("~\\Scripts\\File2.js"));

string fileContentA = File.ReadAllText(filenameA);
string fileContentB - Flie.ReadAllText(filenameB);

System.IO.File.WriteAllText("filename", fileContentA + "\n" + fileContentB);

现在,如果您要将多个文件追加在一起,那么使用StringBulider将是提高性能的方法。

StringBuilder sb = new StringBuilder();
foreach (string filename in filenames)
    sb.AppendLine(File.ReadAllText(filename));

File.WriteAllText(sb.ToString());

此外,如果文件非常大并且不适合内存,则可以使用FileStreams从源流式传输并附加到主文件。

foreach (string filename in filenames)
{
     using (FileStream srcFile = new FileStream(filename, FileMode.Open, FileAccess.Read))
     using (FileStream desFile = new FileStream(targetFilename, FileMode.Append, FileAccess.Write))
           srcFile.CopyTo(desFile);
}

答案 1 :(得分:1)

此代码可以帮助您:

using (System.IO.StreamWriter file = new   
System.IO.StreamWriter("\\Script\\ MyFile.js"))
        {

                    file.WriteLine(sb.ToString());

        }

答案 2 :(得分:1)

你走了:

File.WriteAllText(HttpContext.Current.Server.MapPath("~\\Scripts\\MyFile.js"), sb.ToString());