129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
1

Запись строки определенной длины

07.11.2018, 04:38. Показов 3115. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Нужно записать строку определенной длины:
C#
1
2
3
4
5
6
7
8
9
10
11
12
using (var fs = File.OpenWrite(<путь_к_файлу>))
{                
    using(var bw = new BinaryWriter(fs))
 
        byte[] tmp = new byte[20];
        
        tmp  = Encoding.Default.GetBytes("123");
        bw.Write(tmp, 0, 20);
    }
 
    fs.Close();
}
Длина массива все равно равно 3. В итоге получаю ошибку в 8 строке: Смещение и длина вышли за границы массива или значение счетчика превышает кол-во элементов от указателя до конца исходной коллекции. Вообще, нужно записать просто строку определенного размера
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2018, 04:38
Ответы с готовыми решениями:

Console.Writeline - вывод строки определенной до определенной длины спереходом на новую строку
Добрый день. Существуют разные флаги для Console.Writeline. Например вот такой способ: ...

Разбить произвольный текст, находящийся в файле, на строки определенной длины
Разбить произвольный текст, находящийся в файле, на строки определенной длины. При переносе слова...

Получить последовательность содержащую строки из A длины L1 и все строки из B длины L2 (используя LINQ)
Даны целые положительные числа L1 и L2 и строковые последовательности A и B. Строки...

Заполнение поля до определенной длины
Вопрос следующий - есть определенно заданная длина поля. Есть интовое значение. Как забить до длины...

3
338 / 327 / 154
Регистрация: 29.10.2012
Сообщений: 946
07.11.2018, 07:53 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using (var fs = File.OpenWrite(<путь_к_файлу>))  
{                
    using(var bw = new BinaryWriter(fs))
 
        byte[] tmp = new byte[20]; //создаем массив byte, количество элементов 20 шт.
        
        tmp  = Encoding.Default.GetBytes("123"); //здесь пересоздаем массив  byte, 
                                                 //а количество элементов в зависимости 
                                                 //от количества символов в строке
        bw.Write(tmp, 0, 20); //здесь пытаемся записать массив от 0 до 20,
                              // но массив tmp будет зависеть от длины исходной строки
    }
 
    fs.Close();
}
Можно вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
string fileName = "";
using (var fs = File.OpenWrite(fileName))
{
    using (var bw = new BinaryWriter(fs))
    {
        string str = "123";
        byte[] tmp = Encoding.Default.GetBytes(str);
        bw.Write(tmp, 0, str.Length);
    }
    fs.Close();
}
или так
C#
1
2
3
4
5
6
string str1 = "123";
string fileName1 = "";
using (StreamWriter sw = new StreamWriter(fileName1, false)) //false - всегда пересоздавать файл
{
    sw.Write(str1);
}
1
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
07.11.2018, 12:59  [ТС] 3
Как тогда прочитать неизвестное кол-во байт (т.к. у каждой записываемой строки своя длина, разумеется)? Для метода br.ReadBytes() нужно указать кол-во байтов
0
Модератор
Эксперт .NET
15045 / 10271 / 2708
Регистрация: 21.04.2018
Сообщений: 30,458
Записей в блоге: 2
07.11.2018, 13:31 4
Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
Как тогда прочитать неизвестное кол-во байт (т.к. у каждой записываемой строки своя длина, разумеется)? Для метода br.ReadBytes() нужно указать кол-во байтов
Вам именно байты надо считывать? Методы ReadLines или ReadAllLines не подойдут?

Добавлено через 7 минут
Или используйте побайтовое чтение FileStream.ReadByte. Этот метод возвращает int. Если возвращаемое значение = -1, то достигнут конец потока.

Добавлено через 6 минут
Если хотите считать весь поток в массив байтов (для больших так не надо делать) можно так: br.ReadBytes(BinaryReader.BaseStream.Length)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2018, 13:31
Помогаю со студенческими работами здесь

Поиск слов определенной длины в тексте
Hello, можете привести пример кода, который будет искать одинаковые слова, словом считается...

Вывести лестницу из отрезков определённой длины
14. Вывести лестницу из отрезков определённой длины. Длина (например, 14) и количество ступенек...

Генерация всех паролей определённой длины
Надо, чтобы программа генерировала ВСЕ пароли и сохраняла их. Пароль состоит из 8 символов и может...

Подсчитать количество скобок в строке определенной длины
Нужно ввести строку символов. Определить длину введенной строки L, и если длина L кратна 5, то...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru