好的,所以我有一個函數,它採用圖像文件的路徑,並應該返回字符串的二進制數據。調用者然後將返回的字符串插入到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