C# проверить, есть ли данные в файле и добавить, если необходимо - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь проверить файл .txt на наличие данных в начале строк, и, если вставленные данные уже существуют, спросите, нужно ли их снова вставить. Если его не существует, добавьте его. Не уверен, что будет лучшим способом. Я попытался заставить запись работать в foreach l oop (для чтения строк), но получил ошибку в использовании файла. Мои 2 способа, которые я считаю слишком обойденными, приведены ниже. Я уверен, что есть более простой способ.

public static void LogResult(String seerianumber
    , String tookask
    , String tulemus
    , String versioon
    , String toode
    , String testija
    , String path)
{
    string str=null;
    bool duplicate = false;
    foreach (string line in File.ReadLines(CorrectPath(path)))
    {
        str = line.Split(' ')[0];
        if (seerianumber == str)
        {
            duplicate = true;
            break;
        }
    }
    if(!duplicate)
    {
        using (StreamWriter sr = File.AppendText(CorrectPath(path)))
        {
            sr.WriteLine(ReturnParameter("format1", 1), seerianumber, tookask, tulemus, versioon, toode, DateTime.Today.ToString("dd.MM.yyyy"), DateTime.Now.ToString("HH:mm:ss"), testija);
            sr.Close();
        }
    }
    else if (MessageBox.Show("Seerianumber juba sisestatud. Kas soovid seerianumbri (" + str + ") uuesti sisestada?", "Duplikaat", MessageBoxButtons.YesNo) == DialogResult.Yes)
    {
        using (StreamWriter sr = File.AppendText(CorrectPath(path)))
        {
            sr.WriteLine(ReturnParameter("format1", 1), seerianumber, tookask, tulemus, versioon, toode, DateTime.Today.ToString("dd.MM.yyyy"), DateTime.Now.ToString("HH:mm:ss"), testija);
            sr.Close();
        }
    }
}

v2:

public static bool LogResult(String seerianumber
    , String tookask
    , String tulemus
    , String versioon
    , String toode
    , String testija
    , String path)
{
    foreach (string line in File.ReadLines(CorrectPath(path)))
    {
        string str = line.Split(' ')[0];
        if (seerianumber == str)
        {
            if (MessageBox.Show("Seerianumber juba sisestatud. Kas soovid seerianumbri (" + str + ") uuesti sisestada?", "Duplikaat", MessageBoxButtons.YesNo) == DialogResult.No)
                return false;
            else
                break;
        }
    }
    using (StreamWriter sr = File.AppendText(CorrectPath(path)))
    {
        sr.WriteLine(ReturnParameter("format1", 1), seerianumber, tookask, tulemus, versioon, toode, DateTime.Today.ToString("dd.MM.yyyy"), DateTime.Now.ToString("HH:mm:ss"), testija);
        sr.Close();
    }
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...