【发布时间】:2020-04-16 11:18:29
【问题描述】:
我正在使用旧的 Resume 解析器系统,该系统使用 ProcessStream(ref Stream oStream) 方法,其中 Stream 的类型为 ADODB.Stream。我有一个字节数组,我想转换为这个流,但我做不到。
我尝试将字节数组转换为IO Stream,然后将其转换为 ADODB.Stream,但这也不起作用。
任何帮助将不胜感激。谢谢!
【问题讨论】:
我正在使用旧的 Resume 解析器系统,该系统使用 ProcessStream(ref Stream oStream) 方法,其中 Stream 的类型为 ADODB.Stream。我有一个字节数组,我想转换为这个流,但我做不到。
我尝试将字节数组转换为IO Stream,然后将其转换为 ADODB.Stream,但这也不起作用。
任何帮助将不胜感激。谢谢!
【问题讨论】:
有两种可能的解决方案。
方法一将数据从文件加载到ADODB.Stream。
[TestMethod]
public void Test1()
{
String someString = "Sample string";
Byte[] bytes = Encoding.ASCII.GetBytes(someString);
File.WriteAllBytes("D:\\test.txt", bytes);
ADODB.Stream stream = new ADODB.Stream();
stream.Open();
stream.Type = ADODB.StreamTypeEnum.adTypeBinary;
stream.LoadFromFile("D:\\test.txt");
Byte[] readData = stream.Read(someString.Length);
CollectionAssert.AreEqual(bytes, readData);
}
方法2将数据从内存字节数组加载到ADODB.Stream。
[TestMethod]
public void Test2()
{
String someString = "Sample string";
Byte[] bytes = Encoding.ASCII.GetBytes(someString);
ADODB.Stream stream = new ADODB.Stream();
stream.Open();
stream.Type = ADODB.StreamTypeEnum.adTypeBinary;
stream.Write(bytes);
stream.Position = 0;
Byte[] readData = stream.Read(someString.Length);
CollectionAssert.AreEqual(bytes, readData);
}
在每个方法结束时,我检查了readData 变量,它保存的数据与原始“字节”字节数组相同。
【讨论】: