0

シャープ現像を使用しています。C# を使用して Win アプリを作成しています。プログラムでドライブ c: の test という名前のテキスト ファイルをチェックし、「=」を含む行を見つけて、この行をドライブ c: に新しく作成された他のテキスト ファイルに書き込みます。

4

6 に答える 6

2

File.ReadLines、Linq Where、およびを使用した別の簡単な方法を次に示します。File.AppendAllLines

var path1 = @"C:\test.txt";
var path2 = @"C:\test_out.txt";

var equalLines = File.ReadLines(path1)
                     .Where(l => l.Contains("="));
File.AppendAllLines(path2, equalLines.Take(1));
于 2012-09-28T05:26:03.153 に答える
2

このワンライナーを試してください:

File.WriteAllLines(destinationFileName,
    File.ReadAllLines(sourceFileName)
        .Where(x => x.Contains("=")));
于 2012-09-28T05:22:38.260 に答える
1
using(StreamWriter sw = new StreamWriter(@"C:\destinationFile.txt"))
{
    StreamReader sr = new StreamReader(@"C:\sourceFile.txt");

    string line = String.Empty;

    while ((line = sr.ReadLine()) != null)
    {
        if (line.Contains("=")) { sw.WriteLine(line)); }
    }
    sr.Close();
}
于 2012-09-28T05:20:05.057 に答える
0
if (File.Exists(txtBaseAddress.Text))
{
    StreamReader sr = new StreamReader(txtBaseAddress.Text);
    string line;
    string fileText = "";
    while ((line = sr.ReadLine()) != null)
    {
        if (line.Contains("="))
        {
            fileText += line;
        }
    } 
    sr.Close();
    if (fileText != "")
    {
        try
        {

            StreamWriter sw = new StreamWriter(txtDestAddress.Text);
            sw.Write(fileText);
            sw.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}
于 2012-09-28T05:26:19.323 に答える
0

何か試しましたか?

ファイルを読み取るには、次の 2 つの方法があります。

  1. File クラスで利用可能な静的メソッドを使用します。具体的には ReadAllLines です。小さなファイルを扱う場合は、これで十分です。次に、配列を取得したら、LINQ を使用するか、その他の反復メソッドを使用して、"=" を含むアイテムを見つけます。行を取得したら、再び File クラスを使用してデータを作成し、ファイルに書き込みます。

  2. 大きなファイルを扱う場合は、Stream を使用してください。残りはほぼ同じままです。

于 2012-09-28T05:19:50.147 に答える
0

少し編集されたFurqanの答え

using (StreamReader sr = new StreamReader(@"C:\Users\Username\Documents\a.txt"))
using (StreamWriter sw = new StreamWriter(@"C:\Users\Username\Documents\b.txt"))
{
    int counter = 0;
    string line = String.Empty;
    while ((line = sr.ReadLine()) != null)
    {
        if (line.Contains("="))
        {
           sw.WriteLine(line);

           if (++counter == 4)
           {
              sw.WriteLine();
              counter = 0;
           }
        }
    }
}
于 2012-09-28T05:33:45.723 に答える