2012-08-11 70 views
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(); 

現在我要救這個某人在文件中的\腳本目錄中稱爲MyFile.js。我看到了幾種可用的方法,但我不確定選擇哪一種。

我該怎麼做?

謝謝。

回答

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()); 

此外,如果文件非常大,不適合到內存中,你可以使用文件流剛剛從源流和附加到主文件。

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

此代碼可以幫助您:

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

        file.WriteLine(sb.ToString()); 

     } 
1

在這裏你去:

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