0

私はこのコードを持っています:

BeginInvoke(new Action(() => tempNamesAndTexts.ForEach(Item => textBox1.AppendText(DateTime.Now + "===> " + Item + Environment.NewLine))));
                foreach (string items in tempNamesAndTexts)
                {

                        Logger.Write(items);


                }

プログラムを実行すると、次のようになります。次に、テキスト ファイルは次のようになります。

ダニー こんにちは ロン ハイ ヤエル さようなら ジョシュ みんな OK

次回プログラムを実行すると、同じ文字列がテキスト ファイルに書き込まれます。この文字列がテキスト ファイルに既に存在するかどうかを確認したいので、再度書き込む必要はありません。その結果、プログラムを実行するたびに、新しい文字列があればロガー (テキスト ファイル) にのみ書き込まれます。

これは、ロガー テキスト ファイルの文字列変数です。

full_path_log_file_name

内部のこの変数には次のものがあります。

C:\\Users\\Chocolade\\AppData\\Local\\ChatrollLogger\\ChatrollLogger\\log\\logger.txt

これは、プログラムを実行しているときに DoWork が常に 1 回実行する部分であるこの部分までの完全なコードです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
using DannyGeneral;

namespace ChatrollLogger
{
    public partial class Form1 : Form
    {
        string log_file_name = @"\logger.txt";
        string full_path_log_file_name;
        string path_log;
        bool result;
        List<string> namesAndTexts;
        WebResponse response;
        StreamReader reader;
        string profileName;
        string profileNameText;
        string url;
        string testingUrl;
        int index;
        List<string> names; 
        List<string> texts;
        WebClient wc;


        public Form1()
        {
            InitializeComponent();
            Logger.exist();
            wc = new WebClient();
            result = true;
            url = "http://chatroll.com/rotternet";
            testingUrl = "http://chatroll.com/testings";
            backgroundWorker1.RunWorkerAsync();
            path_log = Path.GetDirectoryName(Application.LocalUserAppDataPath) + @"\log";
            full_path_log_file_name = path_log + log_file_name;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
        {
            BackgroundWorker worker = sender as BackgroundWorker; 
            List<string> tempNamesAndTexts = new List<string>();
            string tempDownload = downloadContent();
            GetProfileNames(tempDownload);
            GetTextFromProfile(tempDownload);
            for (int i = 0; i < names.Count; i++)
            {
                tempNamesAndTexts.Add(names[i] + " " + texts[i]);

            }
            if (InvokeRequired)
            {
                BeginInvoke(new Action(() => tempNamesAndTexts.ForEach(Item => textBox1.AppendText(DateTime.Now + "===> " + Item + Environment.NewLine))));
                foreach (string items in tempNamesAndTexts)
                {

                        Logger.Write(items);
                        string t = full_path_log_file_name;

                }
            }
4

2 に答える 2

1

File.ReadAllLinesを使用する

string[] array = File.ReadAllLines("test.txt");
if(array.Length > 0)
{
// lines exist
}
于 2012-08-13T10:16:18.530 に答える
1

このようなもの?

string path = "test.txt";
string valueToWrite = "....";

//only write to the file, if the specified string is not already there
if(!File.ReadLines(path).Any(l => string.Equals(l, valueToWrite)))
{
    File.AppendAllText(path, valueToWrite);
}
于 2012-08-13T10:33:32.257 に答える