Загрузка...

C# Question: Copy contents of uploaded txt file

Thread in C# created by SNAIQ Nov 8, 2022. 433 views

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


    Code
     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 Topic starter
      ПожилаяШляпа, Я уже видел эту статья , но не могу понять , как это впихнуть в код , который выше.
  3. ПожилаяШляпа

    File.AppendAllText("Log.txt", wmsoft.textboxtest1.Text);
     
    1. SNAIQ Topic starter
      ПожилаяШляпа, Это запись содержимого с textbox , его я указал чисто для примера , мне нужно , чтобы на прямую было сохранение с загруженного файла в файл Log.txt
  4. r3xq1
    r3xq1 Nov 8, 2022 53 Jul 27, 2018
    Для чего тебе это нужно?
     
    1. View previous comments (31)
    2. vtlstolyarov
      SNAIQ, они идентичны, какое тебе больше нравится. второй вариант по идее вызовет меньше вопросов о том почему ты сравниваешь значение с
      true
    3. r3xq1
      SNAIQ, очищай лишние using's перед namespace'ом которые (серым обозначены) и зелёные тоже, потом просто первый предложенный вариант тебе предоставит, тот и выбирай. А то у тебя там каша. А лучше скинь проект целиком что ты там делаешь и тебе сделают нормально.
  5. V1RU
    V1RU Nov 8, 2022 € € € 325 Nov 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`и.)
     
    1. View previous comments (1)
    2. SNAIQ Topic starter
      vtlstolyarov, А можно как то добавить ещё , чтобы допустим к названию файла , добавлялась переменная к примеру ASD.
      к примеру : string ASD = Textbox1.Text , т.е в название файла , который будет создан к примеру , будет добавлена переменная (содержание TextBox1) ?
    3. V1RU
      vtlstolyarov, На своем случае, на случае знакомых, когда с помощью File.ReadAllText гетаешь инфу из бд (Её много), у тебя прод в стратосферу улетает, так что такой простой метод лучше самому написать и дописывать чем этим пользоваться.
    4. vtlstolyarov
      V1RU, ну так зависит от того что тебе нужно, этот метод материализует текст из файла как список, если он не нужен как список (даже в моём случае он не нужен как список, потому что я сразу создаю из него хеш таблицу) то да -можно соптимизировать если использовать чтение из потока. Но фраза о том что он там чего-то не закрывает и не освобождает память - глупости.
  6. yanixasala
    C#
    OpenFileDialog fileDialog = new OpenFileDialog();            
    fileDialog.Filter = "Текстовый Файл (*.txt)|*.txt";
    if (fileDialog.DialogResult == DialogResult.OK)
    {
    needText = File.ReadAllText(fileDialog.FileName);
    File.WriteAlltext(filepath, needText);
    }
    Вот что-то на подобие этого
     
Top
Loading...