2011-06-18 63 views
0

可能有人演示如何到一個文本文件中的所有行復制到另一個(不覆蓋目標文件,如:複製文本從一個文本文件到另一個

文件拷貝行到文件B(無覆蓋在FILEB現有生產線 - 。將它們添加)

+1

作業?聞起來像它。 –

回答

4

這看起來像功課,所以我只給你一些指點

打開與FileMode.OpenFileAccess.Read參數的第一個文件與FileMode.AppendFileAccess.Write打開第二個文件參數

循環遍歷第一個文件,向第二個文件寫入從第一個文件讀取的內容。

查看FileStream類獲取更多信息。

+0

爲什麼不使用File類中的方法呢?如果可以調用ReadLines和這樣的IMO,則在FileStream上循環有點冗餘。 – Neowizard

+0

沒有作業夥伴:) – Ben

+0

@Neowizard:'File.ReadLines'可能對程序員更方便,但對用戶來說,如果文件大於RAM或虛擬地址空間,則用戶的用處會大大減少。 – Timwi

0

這是我的解決方案。希望它能幫助:

Dim fileAContent As String = "" 

    Using strR As New IO.StreamReader(fileAPath) 
     fileAContent = strR.ReadToEnd 
    End Using 

    Using strW As New IO.StreamWriter(fileBPath, True) 
     strW.Write(fileAContent) 
     strW.Flush() 
    End Using 

的StreamWriter第二個參數是密鑰。它會將附加內容到文件末尾。

首先讀取第一個文件中的所有行,然後將所有行追加到第二個文件。

0

希望這個答案可以幫助你。我以一種可以遵循的方式編寫它,讓您對步驟有很好的理解。 要開始,用你的文件替換,然後運行代碼,看看它是否給你你想要的結果。

var file1 = @"C:\Users\User\Desktop\file1.txt"; 
var file2 = @"C:\Users\User\Desktop\file2.txt"; 

var file1Lines = File.ReadAllLines(file1); 
var file2Lines = File.ReadAllLines(file2).ToList(); 

// before the copy 
Console.WriteLine("**Before the copy**"); 
Console.WriteLine(File.ReadAllText(file2)); 

foreach (var l in file1Lines) 
{ 
    file2Lines.Add(l); 
} 
File.WriteAllLines(file2, file2Lines); 

// after the copy 
Console.WriteLine("**After the copy**"); 
Console.WriteLine(File.ReadAllText(file2)); 
+0

這應該工作,但是因爲目標是將'file1'加到'file2'中,所以不需要讀取'file2'的現有內容。只需將'file1'的內容附加到已有的內容即可。刪除'file2Lines'的所有用法,而不是添加'File.AppendAllLines(file2,file1Lines);'更有效率和更少的代碼行。 – BACON

+0

@BACON按照你所建議的方式做它不會正確追加列表中的行。 file1Lines的第一行被附加到file2的最後一行 – dek

+0

我明白你的意思了。這真的取決於文件是否以換行符結束,以及期望的行爲是什麼。如果附加文本應該以新行開頭,則可以在調用File.AppendAllLines之前插入File.AppendAllText(file2,Environment.NewLine);或者將調用改爲File.AppendAllLines(file2,new [] {Environment.NewLine} .Concat(file1Lines));'。 – BACON

相關問題