2010-12-09 96 views
2

我想在文本文件中的某些位置插入數據,而不實際覆蓋現有數據。我有兩個文本文件。 「one.txt」文件有1000行,「two.txt」文件有10000行。我想讀取「one.txt」文件內容並插入到「two.txt」文件內容的前1000行(將「one.txt」的內容附加到「two.txt」的開頭)。將數據插入文本文件

標準:

  • 最小代碼。
  • 減少內存消耗(不考慮編程語言)
  • 性能(將根據文件的大小來考慮)。
+0

是否要將one.txt中的文本「插入」到two.txt中的任意位置?或者你只是想將文本從one.txt添加到two.txt的結尾?追加是微不足道的。插入需要更多的工作。 – 2010-12-09 18:05:45

+0

是否要將one.txt的內容附加到two.txt? – 2010-12-09 18:07:06

回答

3

如果你不侷限於C#中你可以做從Windows命令行:

copy one.txt + two.txt three.txt 

這將創造你想要的文件,但它會被叫做三。文本。如果你必須把它放在two.txt中,你可以簡單地將two.txt重命名爲其他的東西,然後用two.txt作爲第三個參數。

4

只需打開第一個文件的流式讀取器和第二個文件的流式寫入器(以附加模式)。當您讀取第一個文件的前1000行時,將它們插入第二行。

事情是這樣的:

StreamReader sr = new StreamReader("one.txt"); 
StreamWriter sw = new StreamWriter("two.txt", true); //true for append 
index i = 0; 
while (i < 1000) { 
    sw.WriteLine(sr.ReadLine()); 
    i++; 
} 

您可能要檢查的StreamReader的文件的末尾,但是這會給你的總體思路....

基於新信息OP:

您可以使用相同類型的方法,但只需創建一個全新的文件,從第一個文件讀取數據,然後從第二個文件讀取數據。一旦它位於新文件中,請替換原來的「two.txt」。

+0

sw.WriteLine(sw.ReadLine());我想你的意思是sw.WriteLine(sr.ReadLine()); - 我懷疑你寫的甚至會編譯。 – 2010-12-09 20:04:40

3

如果你只需要這樣做一次,這裏有一些代碼可以做你想做的。我沒有編譯這個,但我相信沒有問題。

string[] linesOne = File.ReadAllLines(pathToFile1); 
string[] linesTwo = File.ReadAllLines(pathToFile2); 

List<string> result = new List<string>(); 
for(int i=0;i<1000;i++) 
{ 
    result.Add(linesOne[i]); 
} 
result.AddRange(linesTwo); 

File.WriteAllLines(pathToFile2, result); 

希望這會讓你開始。

鮑勃