Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для Волшебник 307
1396 / 331 / 45
Регистрация: 16.04.2013
Сообщений: 786
Записей в блоге: 2

До запись в начало файла IO.File.AppendAllText("Path.txt", TextBox1.Text, System.Text.Encoding.Default)

14.10.2025, 04:58. Показов 2907. Ответов 35
Метки нет (Все метки)

Так происходит до запись в конец файла.
VB.NET
1
 IO.File.AppendAllText("Path.txt", TextBox1.Text, System.Text.Encoding.Default)
А как сделать наоборот, перевернуть?
---
Чтобы было:
Запись5
Запись4
Запись3
Запись2
Запись1
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.10.2025, 04:58
Ответы с готовыми решениями:

[WPF] "Path" является неоднозначной ссылкой между "System.Windows.Shapes.Path" и "System.IO.Path"
Здравствуйте! Делаю экспорт из программы в Excel. Код брался от WinForm, немного переписал....

Form1.textbox1.text = Form2.textbox1.text
Всем добро. Суть алгоритма легкий и понятный. Я примерно так программировал на VB. Вот не давно...

Передать переменные методу File.AppendAllText
Как записать вместо Text переменные. Например System.IO.File.AppendAllText("C:\\Passwords.txt", a...

35
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18331 / 14257 / 5370
Регистрация: 17.03.2014
Сообщений: 28,921
Записей в блоге: 1
19.10.2025, 22:06
Цитата Сообщение от edmonsur Посмотреть сообщение
StreamReader автоматически распознает BOM (Byte Order Mark) в начале файла, если он присутствует.
Верно. Я об этом сначала написал, а потом привел пример.

Цитата Сообщение от edmonsur Посмотреть сообщение
ваше вижу тоже развивать и развивать нужно.
Если это так, то вам не составит труда показать что-то новое что я не знаю про StreamReader. Текстом или кодом как вам удобнее. До сих пор я вас поправлял.
0
71 / 67 / 5
Регистрация: 11.04.2021
Сообщений: 294
Записей в блоге: 7
19.10.2025, 23:03
OwenGlendower, Пардон..

Если файл имеет BOM — будет использована соответствующая кодировка.

Если BOM нет — будет использована UTF-8.

Если возникают проблемы с кодировкой:
Убедитесь, что файл имеет правильный BOM (для юникодных кодировок).

Явно укажите кодировку при создании StreamReader, если знаете её заранее.

Для не-Unicode файлов (например, Windows-1251) используйте:


VB.NET
1
2
Using reader As New StreamReader("file.txt", Encoding.GetEncoding(1251))
End Using
Важно:
Если вы читаете файл без BOM и без явного указания кодировки, могут возникнуть проблемы с отображением символов (например, кракозябры для кириллицы).
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18331 / 14257 / 5370
Регистрация: 17.03.2014
Сообщений: 28,921
Записей в блоге: 1
19.10.2025, 23:32
edmonsur, всё верно. И теперь можно сделать вывод что лучше не пытаться определять кодировку, а позволить пользователю задать её самостоятельно или использовать кодировку по умолчанию. Потому что иначе есть риск что мы получим файл с текстом в разных кодировках.

Цитата Сообщение от edmonsur Посмотреть сообщение
Пардон..
Всё нормально.
1
71 / 67 / 5
Регистрация: 11.04.2021
Сообщений: 294
Записей в блоге: 7
20.10.2025, 16:11
OwenGlendower, в принципе нужно признать проблема ширше и глубже чем хотелось бы... единственное что приходит на ум — использовать сторонний библиотеки. Например, библиотека Ude установка через NuGet.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Imports Ude
 
Function DetectEncodingWithUde(filePath As String) As Encoding
    Dim bytes As Byte() = File.ReadAllBytes(filePath)
    
    Dim detector = New CharsetDetector()
    detector.Feed(bytes, 0, bytes.Length)
    detector.DataEnd()
    
    If detector.Charset IsNot Nothing Then
        Try
            Return Encoding.GetEncoding(detector.Charset)
        Catch
            Return Encoding.Default
        End Try
    End If
    
    Return Encoding.Default
End Function
Как вариант можно было и так ковырнуть

поиск кодировки с акцентом на кириллицу

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Function DetectEncoding(filePath As String) As Encoding
    ' Сначала пробуем автоопределение StreamReader
    Try
        Using reader As New StreamReader(filePath, Encoding.Default, detectEncodingFromByteOrderMarks:=True)
            reader.Peek()
            If reader.CurrentEncoding IsNot Nothing AndAlso reader.CurrentEncoding <> Encoding.Default Then
                Return reader.CurrentEncoding
            End If
        End Using
    Catch
    End Try
 
    ' Основные кодировки для кириллицы
    Dim encodings As Encoding() = {
        Encoding.UTF8,
        Encoding.GetEncoding(1251),    ' Windows-1251
        Encoding.GetEncoding("koi8-r") ' KOI8-R
    }
 
    For Each enc In encodings
        Try
            Dim content As String = File.ReadAllText(filePath, enc)
            ' Если нет символов замены и есть кириллица - считаем что нашли
            If Not content.Contains("�"c) AndAlso ContainsCyrillic(content) Then
                Return enc
            End If
        Catch
        End Try
    Next
 
    ' Последняя попытка - UTF-8 без BOM
    Try
        Dim content As String = File.ReadAllText(filePath, Encoding.UTF8)
        If Not content.Contains("�"c) Then
            Return Encoding.UTF8
        End If
    Catch
    End Try
 
    Return Encoding.Default
End Function
 
Private Function ContainsCyrillic(text As String) As Boolean
    For Each c As Char In text
        If (c >= "А"c AndAlso c <= "я"c) OrElse c = "Ё"c OrElse c = "ё"c Then
            Return True
        End If
    Next
    Return False
End Function
Добавлено через 3 часа 46 минут

Не по теме:

OwenGlendower,

Dim tempFileName = String.Format("{0}\edmonsur{1}.txt", Path.GetTempPath(), Guid.NewGuid())
Если же нужна абсолютная гарантия то лучше используйте Path.GetTempFileName()

Вероятность коллизии настолько мала, что в практических целях ею можно пренебречь, особенно если, файлы создаются нечасто, если не используется MPP * Массово-параллельная архитектура или прокладка между монитором и стулом clean freak и регулярно чистит %TEMP%

0
20.10.2025, 17:07

Не по теме:

Цитата Сообщение от edmonsur Посмотреть сообщение
что приходит на ум — использовать сторонний библиотеки.
Скажите, а как вы печатаете с клавиатуры такое тире?

0
20.10.2025, 17:14

Не по теме:

Yury Komar, раскладка у Клавы — такая

0
20.10.2025, 17:22

Не по теме:

Цитата Сообщение от Yury Komar Посмотреть сообщение
Скажите, а как вы печатаете с клавиатуры такое тире?
Alt + 0151 на цифровой клавиатуре.

0
20.10.2025, 17:28

Не по теме:

Andrey-MSK, да или так —

0
20.10.2025, 17:42

Не по теме:

Yury Komar,
Вот все тире
1. Клавиатура стандартная: -
2. Среднее тире, Alt + 0150: –
3. Длинное тире, Alt + 0151: —

3
20.10.2025, 19:36

Не по теме:

Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Вот все тире
1. Клавиатура стандартная: -
2. Среднее тире, Alt + 0150: –
3. Длинное тире, Alt + 0151: —
%-) а зачем так заморачиваться ради обычного тире?

0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18331 / 14257 / 5370
Регистрация: 17.03.2014
Сообщений: 28,921
Записей в блоге: 1
20.10.2025, 20:20
Цитата Сообщение от edmonsur Посмотреть сообщение
единственное что приходит на ум — использовать сторонний библиотеки. Например, библиотека Ude установка через NuGet.
Спасибо, я в курсе. Не стал упоминать потому что считаю функцию автопределения кодировки ненужной в контексте данной задачи. Проще ограничится передачей Encoding в метод PrependAllText (как я выше и сделал). Автоопределение кодировки можно сделать отдельной функцией и передавать её результат процедуре PrependAllText. Не нужно нагружать методы лишней ответственностью — полученный код будет проще понимать и поддерживать.

Цитата Сообщение от edmonsur Посмотреть сообщение
Если же нужна абсолютная гарантия то лучше используйте Path.GetTempFileName()
Я знаю про эту функцию. Коллизии меня не беспокоят. Насколько я знаю в ней есть баг когда она может неожиданно выкинуть исключение. Поэтому я избегаю ей пользоваться.

Не по теме:

Цитата Сообщение от Yury Komar Посмотреть сообщение
а зачем так заморачиваться ради обычного тире?
Ради грамотного оформления текста например. Это не преступление и не признак использования ИИ если вы к этому вели.

0
71 / 67 / 5
Регистрация: 11.04.2021
Сообщений: 294
Записей в блоге: 7
20.10.2025, 22:56
OwenGlendower,

Я знаю про эту функцию. Коллизии меня не беспокоят. Насколько я знаю в ней есть баг когда она может неожиданно выкинуть исключение. Поэтому я избегаю ей пользоваться.
с .NET 8, ограничение в 65 535 файлов для метода Path.GetTempFileName() было снято на всех операционных системах из за которого и возникали проблемы с исключением. Если приложение работает на .NET 8 или новее, эта конкретная проблема больше не должна возникать. Единственная известная проблема этой процедуры это небезопасность, потому что предсказуемые имена файлов делают приложение уязвимым для атак. Но с текстовыми файлами это не должно вызывать опасение.

Не по теме:

Это не преступление и не признак использования ИИ

Нет, у меня действительно клава офисная от Майкрософта... половина кнопок я и через 3 года использования не знаю
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18331 / 14257 / 5370
Регистрация: 17.03.2014
Сообщений: 28,921
Записей в блоге: 1
20.10.2025, 23:12
Цитата Сообщение от edmonsur Посмотреть сообщение
с .NET 8, ограничение в 65 535 файлов для метода Path.GetTempFileName() было снято на всех операционных системах из за которого и возникали проблемы с исключением.
Спасибо что процитировали документацию. Выкладывая примеры в разделе VB.NET не приходится рассчитывать на .NET 8. Скорее следует ориентироваться на .NET Framework.
0
20.10.2025, 23:54

Не по теме:

Цитата Сообщение от OwenGlendower Посмотреть сообщение
Выкладывая примеры в разделе VB.NET не приходится рассчитывать на .NET 8.
Есть какой-то подвох в этом?

0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18331 / 14257 / 5370
Регистрация: 17.03.2014
Сообщений: 28,921
Записей в блоге: 1
20.10.2025, 23:56
I can, никаких подвохов — только моё личное впечатление что программисты на VB.NET с большей вероятностью используют .NET Framework.
1
71 / 67 / 5
Регистрация: 11.04.2021
Сообщений: 294
Записей в блоге: 7
21.10.2025, 00:02
OwenGlendower, я лично с багом исключения ещё не сталкивался,(каюсь грешен) пришлось заглянуть в документацию о каком баге идёт речь... расширить так сказать кругозор, но тем не менее считаю для текстовых файлов меры предосторожности избыточными, но !!! это опять же, моё — сугубо личное — не к чему не обязывающие мнение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2025, 00:02

File.AppendAllText() перезаписывает файл. Почему?
На просторах интернета нашел метод AppendAllText, которых должен открыть файл, дописать строку в...

Как выполнить UnitTest выражения File.AppendAllText?
Вопрос. Как выполнить UnitTest выражения File.AppendAllText? Описание. Я пробую...

Чем отличается Encoding.Unicode от Encoding.UTF16
я вот что то не пойму чем отличается Encoding.Unicode от Encoding.UTF16? и почему в браузерах...

Почему реализация ГОСТ 89 работает с Encoding.UTF8 и не работает с Encoding.ASCII?
Класс GOSTCrypto //S-блок protected byte S_Block = { new byte {...

Не работает File.Exists(path), если path собирается из разных символов
Простая задача if (File.Exists(path)) label4.Text = &quot;файл есть !&quot;; так работает ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru