相关疑难解决方法(0)

你能让StreamReader不要处理底层流吗?

有没有办法做到这一点:

this.logFile = File.Open("what_r_u_doing.log", FileMode.OpenOrCreate, FileAccess.ReadWrite);

using(var sr = new StreamReader(this.logFile))
{
    // Read the data in
}

// ... later on in the class ...

this.logFile = File.Open("what_r_u_doing.log", FileMode.OpenOrCreate, FileAccess.ReadWrite);

using(var sw = new StreamWriter(this.logFile))
{
    // Write additional data out...
}
Run Code Online (Sandbox Code Playgroud)

无需打开文件两次?

我似乎无法使StreamReader不处理我的流.我也不想让它超出范围.然后垃圾收集器最终将调用Dispose,杀死流.

c# file-io

49
推荐指数
3
解决办法
2万
查看次数

将String写入Stream并将其读回不起作用

我想将一个String写入一个Stream(本例中是一个MemoryStream)并逐个读取这些字节.

stringAsStream = new MemoryStream();
UnicodeEncoding uniEncoding = new UnicodeEncoding();
String message = "Message";

stringAsStream.Write(uniEncoding.GetBytes(message), 0, message.Length);

Console.WriteLine("This:\t\t" + (char)uniEncoding.GetBytes(message)[0]);
Console.WriteLine("Differs from:\t" + (char)stringAsStream.ReadByte());
Run Code Online (Sandbox Code Playgroud)

我得到的(不受欢迎的)结果是:

This:         M
Differs from: ?
Run Code Online (Sandbox Code Playgroud)

看起来像它没有被正确读取,为"信息"的第一个字符是"M",从UnicodeEncoding实例获取字节时,但不读他们从流回来时,其工作原理.

我究竟做错了什么?


更大的图片:我有一个算法可以处理Stream的字节,我希望尽可能通用并使用任何Stream.我想将ASCII-String转换为MemoryStream,或者使用另一种方法将String作为Stream处理.有问题的算法将处理Stream的字节.

c# stream

37
推荐指数
4
解决办法
9万
查看次数

标签 统计

c# ×2

file-io ×1

stream ×1