好的,所以我有一个函数,它采用图像文件的路径,并应该返回字符串的二进制数据。调用者然后将返回的字符串插入到XML元素的内部文本中。二进制数据与字符数据混淆
这是正确的?:
string dataAsString = "";
using (StreamReader sr = new StreamReader(new FileStream(mergedFile, FileMode.Open, FileAccess.Read, FileShare.Read, 2048, FileOptions.DeleteOnClose)))
dataAsString = sr.ReadToEnd();
return dataAsString;
这将返回的东西,看起来像它可能是合法的二进制数据,但如果我剪切和粘贴内容出目标文件,将其粘贴到一个新的测试TIF文件然后尝试打开tif图像,它对我不满......所以我怀疑我读/写数据的方式有什么问题。
我必须真的这样做吗?
using (BinaryReader br = new BinaryReader(new FileStream(mergedFile, FileMode.Open, FileAccess.Read, FileShare.Read, 1024, FileOptions.None)))
{
int blockReadSz = 2048;
int bytesToRead = (int)br.BaseStream.Length;
int bytesRead = 0;
byte[] data = new byte[bytesToRead];
while (bytesRead < bytesToRead)
bytesRead += br.Read(data, bytesRead, blockReadSz);
}
如果是这样,一旦我读完文件后,如何从字节[]中获取字符串?
感谢您的帮助! :D
非常感谢! :) – cakeforcerberus 2009-05-06 14:55:23
糟糕!您忘记检查Read方法的返回值。不能保证读取您请求的所有数据,因此您必须检查其实际读取的数量以确保获取整个文件。 – Guffa 2009-05-06 17:22:35