Загрузка...

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

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

  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
    r3xq1 8 ноя 2022 53 27 июл 2018
    Для чего тебе это нужно?
     
    1. Посмотреть предыдущие комментарии (21)
    2. vtlstolyarov
      SNAIQ, покажи код (включая using часть)
    3. SNAIQ Автор темы
    4. vtlstolyarov
      SNAIQ, похоже что у тебя конфликт имён классов из импортируемых пространств имён, попробуй так:
      C#
      if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    5. Посмотреть следующие комментарии (9)
  5. V1RU
    V1RU 8 ноя 2022 € € € 325 9 ноя 2019
    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
Загрузка...