2012-09-14 19 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

在这种情况下是没有区别的。你想将文件的内容读入一个字节数组,这意味着你将该文件视为一个二进制文件,所以这是完全正确的。或者我误解了这个问题。 –

相关问题