C # TextWriter вставка разрыва строки каждые 1024 символа - PullRequest
2 голосов
/ 26 мая 2009

Я использую текстовый редактор для записи данных в текстовый файл, но если строка превышает 1024 символа, вставляется разрыв строки, и это проблема для меня. Любые предложения о том, как обойти это или увеличить лимит персонажей?

textWriter.WriteLine(strOutput);

Большое спасибо

Ответы [ 4 ]

5 голосов
/ 26 мая 2009

Ну, вы используете TextWriter.WriteLine(string), который добавляет \r\n после strOutput. Как говорят в документах:

Записывает строку с последующим ограничителем строки в текстовый поток.

(Подчеркните мое.) Хотя это не имеет ничего общего с 1024 символами - я думаю, что именно так вы и читаете (например, с буфером в 1024 символа).

Чтобы избежать дополнительного разрыва строки, просто используйте

textWriter.Write(strOutput);

РЕДАКТИРОВАТЬ: Вы говорите в комментарии, что вам нужно разрыв строки после «полная строка была выписана» - но это звучит как strOutput не всегда одна и та же строка.

Я подозреваю, что самый простой способ выполнить то, что вы хотите, это отделить сторону "копирования" от стороны "разрыва строки". Используйте Write для всего текста, который вы хотите скопировать, а затем просто наберите

textWriter.WriteLine();

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

5 голосов
/ 26 мая 2009

Используйте Write, а не WriteLine

4 голосов
/ 26 мая 2009

Я написал пример приложения, которое пишет и читает строку из 1025 символов. Размер никогда не меняется. Хотя, если я открыл его с помощью notepad.exe (Windows), я вижу дополнительный символ во второй строке. Это похоже на ограничение блокнота. Вот мой пример кода

    static void Main(string[] args)
    {
        using (TextWriter streamWriter = new StreamWriter("lineLimit.txt")) {
            String s=String.Empty;
            for(int i=0;i<1025;i++){
                s+= i.ToString().Substring(0,1);
            }
            streamWriter.Write(s);
            streamWriter.Close();
        }
        using (TextReader streamReader = new StreamReader("lineLimit.txt"))
        {
            String s = streamReader.ReadToEnd();
            streamReader.Close();
            Console.Out.Write(s.Length);
        }
    }
0 голосов
/ 26 мая 2009

если вам нужно добавить разрывы строк в конце вашего вывода, просто добавьте их.

textWriter.Write(strOutput +"\r\n");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...