Загрузка...

C# Вопрос: Скопировать содержимое загруженного файла txt

Тема в разделе C# создана пользователем SNAIQ 8 ноя 2022. 414 просмотров

  1. SNAIQ
    SNAIQ Автор темы 8 ноя 2022 One moment 312 29 окт 2021
    Добрый вечер. Подскажите пожалуйста , как скопировать содержимое загруженного txt файла через OpenDialogFile в другой txt файл.


    Код
     public void function_f1()
    {

    OpenFileDialog function_f1 = new OpenFileDialog();
    function_f1.Filter = "Текстовый Файл (*.txt)|*.txt";
    if (function_f1.ShowDialog() == true)
    {
    wmsoft.textboxtest1.Text = File.ReadAllText(function_f1.FileName, Encoding.Default);

    }
    }
    Здесь указанно , что я должен загрузить файл с форматом txt , после загрузки , выполняется трансляция содержимого в textbox , мне нужно сделать так , чтобы содержимое отправлялось в корневую папку с софтом в Файл - Log.txt .

    И также нужно , чтобы в Log.txt , содержимое добавилось , без перезаписи содержимого. Т.е , если условно в файле уже есть какие то записи , то просто ниже вставляется содержимое из функции. что то на подобии , метода AppendText .
     
  2. ПожилаяШляпа
    1. SNAIQ Автор темы
      ПожилаяШляпа, Я уже видел эту статья , но не могу понять , как это впихнуть в код , который выше.
  3. ПожилаяШляпа

    File.AppendAllText("Log.txt", wmsoft.textboxtest1.Text);
     
    1. SNAIQ Автор темы
      ПожилаяШляпа, Это запись содержимого с textbox , его я указал чисто для примера , мне нужно , чтобы на прямую было сохранение с загруженного файла в файл Log.txt
  4. r3xq1
    Для чего тебе это нужно?
     
    1. Посмотреть предыдущие комментарии (30)
    2. SNAIQ Автор темы
      vtlstolyarov, и то и то выражение работает , какое лучше использовать ?
    3. vtlstolyarov
      SNAIQ, они идентичны, какое тебе больше нравится. второй вариант по идее вызовет меньше вопросов о том почему ты сравниваешь значение с
      true
    4. r3xq1
      SNAIQ, очищай лишние using's перед namespace'ом которые (серым обозначены) и зелёные тоже, потом просто первый предложенный вариант тебе предоставит, тот и выбирай. А то у тебя там каша. А лучше скинь проект целиком что ты там делаешь и тебе сделают нормально.
  5. V1RU
    C#
            public void function_f1()
    {
    using (FileStream file = new FileStream("Текстовый Файл (*.txt)|*.txt", FileMode.Append)) //Объявляешь обьект файла с режимом добавления строк и своим путем.
    {
    using (StreamWriter sw = new StreamWriter(file))//Объявляешь обьект StreamWriter
    {
    sw.WriteLine("Абра-кадабра!");//Запись строк на прямую в файл
    using (StreamReader sr = new StreamReader(file)) //Сюда объект файлика от куда, что читать.
    {
    Console.WriteLine(sr.ReadLine()); //Вывод строк: Абра-кадабра!
    }
    }
    }//С оптимизацией все должно быть ок, так как тут используем using, при завершении инструкций, очистит занятую память и процесс не будет дергать файл.
    //Так же хорош тем что может дергать большие обьемы информации из бд или из файликов как в твоем случае
    //Так же лучше это все делать асинхронно.
    //Если хочешь на прямую, то либо гетай путь до перетаскиваемого файла - сохраняй его (файл), либо по байтам собирай где надо, можно вроде сразу в файлик все это дело записать с новой строки.
    }
    Все условия свои, объекты, диалоговые окна расставить осталось. И не пиши так пж:
    Вместо if (function_f1.ShowDialog() == true), лучше if (function_f1.ShowDialog()), так как если функция возвращает bool, на true можно не использовать операторы
    Про File.ReadAllText(function_f1.FileName, Encoding.Default); - Его лучше вообще никогда не использовать, так как жутко не оптимизированный, не умеет нормально читать большие данные, с освобождением за собой памяти у него проблемы, еще после него процесс дергает файлик, даже если инструкции отработали, пока Dispose или Close не пропишешь. (с FileStream, StreamWriter, StreamReader - тоже нужно это писать, но тут можно нормально использовать using`и.)
     
    8 ноя 2022 Изменено
    1. Посмотреть предыдущие комментарии (1)
    2. SNAIQ Автор темы
      vtlstolyarov, А можно как то добавить ещё , чтобы допустим к названию файла , добавлялась переменная к примеру ASD.
      к примеру : string ASD = Textbox1.Text , т.е в название файла , который будет создан к примеру , будет добавлена переменная (содержание TextBox1) ?
    3. V1RU
      vtlstolyarov, На своем случае, на случае знакомых, когда с помощью File.ReadAllText гетаешь инфу из бд (Её много), у тебя прод в стратосферу улетает, так что такой простой метод лучше самому написать и дописывать чем этим пользоваться.
    4. vtlstolyarov
      V1RU, ну так зависит от того что тебе нужно, этот метод материализует текст из файла как список, если он не нужен как список (даже в моём случае он не нужен как список, потому что я сразу создаю из него хеш таблицу) то да -можно соптимизировать если использовать чтение из потока. Но фраза о том что он там чего-то не закрывает и не освобождает память - глупости.
  6. yanixasala
    yanixasala 9 ноя 2022 8 2 май 2019
    C#
    OpenFileDialog fileDialog = new OpenFileDialog();            
    fileDialog.Filter = "Текстовый Файл (*.txt)|*.txt";
    if (fileDialog.DialogResult == DialogResult.OK)
    {
    needText = File.ReadAllText(fileDialog.FileName);
    File.WriteAlltext(filepath, needText);
    }
    Вот что-то на подобие этого
     
    9 ноя 2022 Изменено
Загрузка...
Top