2012-09-14 28 views
0

我需要將one.xaml文件的內容複製到字節clob中。這是我的代碼。它看起來像我沒有訪問此文件的內容。誰能告訴我爲什麼。我是C#API的新手,但我是一名程序員。 4000的選擇是因爲最大的字符串大小限制,以防萬一有人想知道。我可能會有關於zies等的bug。但主要的是我想將tham xaml文件的內容放入clob中。謝謝。只需將xaml文件複製到clob中即可。爲什麼不工作

  string LoadedFileName = @"C:\temp2\one.xaml";//Fd.FileName; 
      byte[] clobByteTotal ; 
      FileStream stream = new FileStream(LoadedFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
      if (stream.Length % 2 >= 1) 
      { 
        clobByteTotal = new byte[stream.Length + 1]; 
      } 
      else clobByteTotal = new byte[stream.Length]; 
      for (int i = 0; i <= stream.Length/4000; i++) 
      { 
       int x = (stream.Length/4000 == 0) ? (int)stream.Length : 4000; 
       stream.Read(stringSizeClob, i*4000, x); 
       String tempString1 = stringSizeClob.ToString(); 
       byte[] clobByteSection = Encoding.Unicode.GetBytes(stringSizeClob.ToString()); 
       Buffer.BlockCopy(clobByteSection, 0, clobByteTotal, i * clobByteSection.Length, clobByteSection.Length); 
      } 
+0

有**沒有4000個字符的最大字符串大小限制**。你可能指的是字符串*文字長度的限制:一個完全不同的問題。 – Adam

+0

感謝您的澄清和我的C#啓發。 – user1298925

回答

2

如果你只需要讀取文本文件的內容轉換成字節數組,就可以沒有太大的文件做

string xamlText = File.ReadAlltext(LoadedFileName); 
byte[] xamlBytes = Encoding.Unicode.GetBytes(xamlText); //if this is a Unicode and not UTF8 

//write byte data somewhere 

這短得多的選擇,這是合適的,自然。

+0

謝謝你的回答。你是否知道文件長度超過4000字節的方法?我會立即嘗試您的回答,但我仍然遇到大於4000字節的問題。 – user1298925

+0

@ user1298925你在哪裏得到這個神奇的字符串/數組4000字節限制?我相信字符串的限制應該更像2 GIGA字節。如果超過這個限制,你的設計肯定是錯誤的。 – Earlz

+0

@ user1298925看到我對你的問題的評論:**沒有這樣的限制** – Adam

1

任何不使用的原因File.ReadAllBytes

byte[] xamlBytes = File.ReadAllBytes(path); 
+0

這個對二進制文件進行操作... – Tigran

+0

在這種情況下是沒有區別的。你想將文件的內容讀入一個字節數組,這意味着你將該文件視爲一個二進制文件,所以這是完全正確的。或者我誤解了這個問題。 –

相關問題