Как я могу записать целое число в FileStream в C#? - PullRequest
2 голосов
/ 21 марта 2020

Мне было интересно, может ли кто-нибудь помочь мне решить проблему, с которой я столкнулся во время игры с FileStreams. Я пытался отправить целое число 50 в FileStream и записать его значение в файл. Однако он записывает 2 в файл вместо 50. Я знаю, что ASCII-представление 50 равно 2, поэтому я не уверен, является ли это частью проблемы. Если у кого-нибудь есть указатели, я бы очень признателен!

Вот мой соответствующий код: Из основной функции:

string testMessage = "Testing writing some arbitrary string to a streama";
int tmL = testMessage.Length;
byte bb = Convert.ToByte(tmL);
SendByteStrem(bb);

А вот моя функция потоковой передачи:

public static void SendByteStrem(byte c){
    using (Stream ioStream = new FileStream(@"C:\Users\db0201\Desktop\stream.txt", FileMode.OpenOrCreate)){
          ioStream.WriteByte(c);
    }
 }

1 Ответ

3 голосов
/ 21 марта 2020

Поскольку вы явно не указали свою цель, я отвечу на вопрос, что это такое.

Самый простой способ записи в файл - это использовать File.WriteAllText который по существу открывает StreamWriter (который в свою очередь открыт FileStream) и вызывает Write

Создает новый файл, записать содержимое в файл, а затем закроет файл. Если целевой файл уже существует, он перезаписывается.

File.WriteAllText(fileName, "50")

или

var myInt = 50;
File.WriteAllText(fileName, myInt.ToString())

Если вы хотите использовать StreaWriter исключительно

using (varwriter = new StreamWriter(fileName))  
    writer.Write(myInt.ToString());  

Если вам нужно больше настроек по сравнению с базовым FileStream

using (var writer = new StreamWriter(new FileStream(fileName, FileMode.CreateNew)))  
   writer.Write(myInt.ToString());  

, если вы просто хотите использовать FileStream, то все становится немного более ручным, поскольку вам нужно будет преобразовать вещи в байт

using (var stream = new FileStream(fileName, FileMode.CreateNew)) 
{
    var bytes = Encoding.UTF8.GetBytes(myInt.ToString());
    stream.Write(bytes, 0, bytes.Length);
}
...