On Dec 22, 2011, at 4:49 PM, John Croft wrote:
> I have the following code:

Runtime behavior will depend upon the contents of the QUICKEDIT_FILENAME file, 
which you don't provide. That makes it rather hard to reproduce. :-)

So, my equivalent code works:

        void TestStreamInvokers (TextView textview)
        {
                bool success = true;
                var test_string = "hello";

                Stream osa = OpenFileOutput ("test.txt", 
FileCreationMode.Private);
                var write_bytes = System.Text.Encoding.ASCII.GetBytes 
(test_string);

                osa.Write (write_bytes, 0, write_bytes.Length);
                osa.Close ();

                Stream isa = OpenFileInput ("test.txt");
                var content = new byte[1024];
                if (isa.Read(content,0,content.Length) > 0)
                {
                        UTF8Encoding enc = new UTF8Encoding();
                        if (enc.GetChars(content).Length>0)
                                Console.WriteLine 
(enc.GetChars(content),0,(enc.GetChars(content)).Length-1);
                }
                isa.Close ();
        }

That said, I find your code to be rather...odd:

> void OpenFile()
>        {
>            byte[] content = new byte[1024];
>            try
>            {
>                Stream fis = OpenFileInput(QUICKEDIT_FILENAME);
>                if (fis.Read(content,0,content.Length) > 0)

Stream.Read() does not "null terminate" the buffer. You shouldn't discard the 
return value, as that tells how many bytes were actually written into 
`content`. If you reused the buffer (which you don't here, but if you did), you 
may have "garbage data" left from a previous loop invocation that would then be 
appended to your later strings.

> Any thoughts would be appreciated.

It's possible that QUICKEDIT_FILENAME contains data that UTF8Encoding doesn't 
like, such as an invalid byte sequence or a byte sequence which is aborted 
mid-sequence. Without knowing the contents, it's hard to say.

 - Jon

_______________________________________________
Monodroid mailing list
[email protected]

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to