gpt4 book ai didi

c# - 即使封装在 using() 中,内存流也不可扩展

转载 作者:太空宇宙 更新时间:2023-11-03 21:02:26 29 4
gpt4 key购买 nike

我正在使用多个内存流将我的文件名转换为流并像这样写入它们:

public static void Save() {
try {
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes("Clients.txt"))) {
using(StreamWriter sw = new StreamWriter(ms)) {
writeClients(sw);
} */ Line 91 */
}

using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes("Hotels.txt"))) {
using(StreamWriter sw = new StreamWriter(ms)) {
writeHotels(sw);
}
}
[...]
} catch {
[...]
}
}

但不知何故,当我调用 Save() 时,出现以下错误:

Unhandled Exception: System.NotSupportedException: Memory stream is not expandable.
at System.IO.__Error.MemoryStreamNotExpandable()
at System.IO.MemoryStream.set_Capacity(Int32 value)
at System.IO.MemoryStream.EnsureCapacity(Int32 value)
at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.IO.StreamWriter.Dispose(Boolean disposing)
at System.IO.TextWriter.Dispose()
at csharp.Program.Save() in /home/nids/Documents/csharp/Program.cs:line 91
at csharp.Program.Main(String[] args) in /home/nids/Documents/csharp/Program.cs:line 290

第 290 行是我调用 Save()

的行

我不确定是什么导致了错误!

最佳答案

您已经创建了一个内存流,它从 string Clients.txt 的 utf8 表示中读取,而不是从文件中读取。

包装固定字节数组的内存流是不可调整大小的,因此您不能写入超过初始化它们的字节数组的大小。

如果您打算写入文件,请参阅 How to Write to a file using StreamWriter?

关于c# - 即使封装在 using() 中,内存流也不可扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44102510/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com