Экспорт данных в txt - Файлы C # [дубликаты]

Вот некоторые подходы к работе с асинхронными запросами:
  1. Объект обезьяны браузера
  2. Q - A
  3. A + Promises.js
  4. jQuery отложен
  5. API XMLHttpRequest
  6. Использование концепции обратного вызова - как реализация в первом ответе

Пример: jQuery отложенная реализация для работы с несколькими запросами

var App = App || {};

App = {
    getDataFromServer: function(){

      var self = this,
                 deferred = $.Deferred(),
                 requests = [];

      requests.push($.getJSON('request/ajax/url/1'));
      requests.push($.getJSON('request/ajax/url/2'));

      $.when.apply(jQuery, requests).done(function(xhrResponse) {
        return deferred.resolve(xhrResponse.result);
      });
      return deferred;
    },

    init: function(){

        this.getDataFromServer().done(_.bind(function(resp1, resp2) {

           // Do the operations which you wanted to do when you
           // get a response from Ajax, for example, log response.
        }, this));
    }
};
App.init();
137
задан CodeCaster 22 July 2014 в 12:47
поделиться

10 ответов

Используйте это вместо:

new StreamWriter("c:\\file.txt", true);

С этой перегрузкой конструктора StreamWriter вы выбираете, добавляете ли вы файл или перезаписываете его.

C # 4 и выше предлагает следующий синтаксис, который некоторые находят более читаемыми:

new StreamWriter("c:\\file.txt", append: true);
228
ответ дан DWRoelands 4 September 2018 в 09:34
поделиться
 using (FileStream fs = new FileStream(fileName,FileMode.Append, FileAccess.Write))
 using (StreamWriter sw = new StreamWriter(fs))
 {
    sw.WriteLine(something);
 }
133
ответ дан Andrey Taptunov 4 September 2018 в 09:34
поделиться

Другим вариантом является использование System.IO.File.AppendText

Это эквивалентно перегрузкам, которые другие передали StreamWriter.

Также File.AppendAllText может дать немного более легкий интерфейс, не беспокоясь об открытии и закрытии потока. Хотя вам может понадобиться, чтобы потом беспокоиться о том, чтобы вставить свои собственные линии. :)

5
ответ дан Chris 4 September 2018 в 09:34
поделиться

Заменить это:

StreamWriter file2 = new StreamWriter("c:/file.txt");

с помощью этого:

StreamWriter file2 = new StreamWriter("c:/file.txt", true);

true указывает, что он добавляет текст.

7
ответ дан Cullub 4 September 2018 в 09:34
поделиться

Предполагаю, что вы выполняете все вышеуказанного кода каждый раз, когда вы что-то пишете в файл. Каждый раз, когда поток для файла открывается, его указатель поиска позиционируется в начале, поэтому все записи в конечном итоге переписывают то, что было до этого.

Вы можете решить проблему двумя способами: либо с удобным

file2 = new StreamWriter("c:/file.txt", true);

или путем прямого позиционирования указателя потока:

file2 = new StreamWriter("c:/file.txt");
file2.BaseStream.Seek(0, SeekOrigin.End);
10
ответ дан Jon 4 September 2018 в 09:34
поделиться

Используйте этот конструктор StreamWriter со вторым параметром - true.

5
ответ дан Kirill Polishchuk 4 September 2018 в 09:34
поделиться

Попробуйте следующее:

StreamWriter file2 = new StreamWriter(@"c:\file.txt", true);
file2.WriteLine(someString);
file2.Close();
8
ответ дан Marco 4 September 2018 в 09:34
поделиться

Заменить эту строку:

StreamWriter sw = new StreamWriter("c:/file.txt");

с помощью этого кода:

StreamWriter sw = File.AppendText("c:/file.txt");

, а затем записать вашу строку в текстовый файл следующим образом:

sw.WriteLine("text content");
1
ответ дан Sabyasachi Mishra 4 September 2018 в 09:34
поделиться

На самом деле только ответ Джона (сент. 5'11 в 9:37) с BaseStream.Seek работал для моего дела. Спасибо, Джон! Мне нужно было добавить строки в zip-архив txt-файл.

using (FileStream zipFS = new FileStream(@"c:\Temp\SFImport\test.zip",FileMode.OpenOrCreate))
{
    using (ZipArchive arch = new ZipArchive(zipFS,ZipArchiveMode.Update))
    {
        ZipArchiveEntry entry = arch.GetEntry("testfile.txt");
        if (entry == null)
        {
            entry = arch.CreateEntry("testfile.txt");
        }
        using (StreamWriter sw = new StreamWriter(entry.Open()))
        {
            sw.BaseStream.Seek(0,SeekOrigin.End);
            sw.WriteLine("text content");
        }
    }
}
4
ответ дан Veroslav Olic 4 September 2018 в 09:34
поделиться

Еще один простой способ - использовать File.AppendText, он добавляет кодированный текст UTF-8 к существующему файлу или к новому файлу, если указанный файл не существует и возвращает System.IO.StreamWriter

using (System.IO.StreamWriter sw = System.IO.File.AppendText(logFilePath + "log.txt"))
{                                                
    sw.WriteLine("this is a log");
}
2
ответ дан Vinod Srivastav 4 September 2018 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: