3

私は文字列ビルダーを使用して、次のようなディレクトリからいくつかのファイルを読み取ります。

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ディレクトリに保存します。いくつかの方法がありますが、どれを選択すればよいかわかりません。

どうすればよいですか?

ありがとう。

4

3 に答える 3

3

Server.MapPath()はファイルを読み込まず、サーバーの相対パスに基づいて正しい絶対パスを提供するだけです。ファイルを読み込んで1つのファイルに書き込む場合は、次のようにしてみてください。

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);
}
于 2012-08-11T00:51:03.320 に答える
1

このコードはあなたを助けることができます:

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

                    file.WriteLine(sb.ToString());

        }
于 2012-08-11T00:51:13.683 に答える
1

どうぞ:

File.WriteAllText(HttpContext.Current.Server.MapPath("~\\Scripts\\MyFile.js"), sb.ToString());
于 2012-08-11T00:51:30.347 に答える