Запись файла с добавлением случайных символов в начало каждой строки - PullRequest
1 голос
/ 05 июля 2011

Я перезаписываю файл с помощью C # в Windows Phone 7. Когда я делаю это, в начало каждой строки добавляется, казалось бы, случайный символ.

Почему это происходит?

Код:

public static bool overwriteFile(string filename, string[] inputArray)
    {
        try
        {
            IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();

            FileStream stream = store.OpenFile(filename, FileMode.Create);
            BinaryWriter writer = new BinaryWriter(stream);

            foreach (string input in inputArray)
            {
                writer.Write(input + "\n");
            }

            writer.Close();
            return true;

        }
        catch (IOException ex)
        {
            return false;
        }
    }

Код проживания:

public static Idea[] getFile(string filename)
    {
        try
        {
            IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
            string fileContents = null;
            if (store.FileExists(filename)) // Check if file exists
            {
                IsolatedStorageFileStream save = new IsolatedStorageFileStream(filename, FileMode.Open, store);

                StreamReader streamReader = new StreamReader(save);
                fileContents = streamReader.ReadToEnd();
                save.Close();

            }

            string[] lines = null;
            if (fileContents != null)
            {
                lines = fileContents.Split('\n');
            }



            Idea[] ideaList = null;
            if (lines != null)
            {
                ideaList = new Idea[lines.Length];
                for (int i = 0; i < lines.Length; i++)
                {
                    ideaList[i] = new Idea(lines[i].TrimEnd('\r'));
                }
            }

            return ideaList;
        }
        catch (IOException ex)
        {
            return null;
        }
    }

Ответы [ 4 ]

6 голосов
/ 05 июля 2011

Случайный символ является префиксом длины;см. http://msdn.microsoft.com/en-us/library/yzxa6408.aspx.

Вы должны использовать какой-либо тип TextWriter для записи строк в файл;НЕ Бинарный писатель.

StreamWriter может быть лучшим, и тогда вы можете использовать метод WriteLine.

1 голос
/ 05 июля 2011

Вы используете BinaryWriter для записи и TextReader для чтения.Измените код записи, чтобы использовать StreamWriter (который является TextWriter) вместо BinaryWriter.Это также даст вам метод WriteLine, который рекомендует Naveed.

1 голос
/ 05 июля 2011

Вместо использования '\n', попробуйте использовать Environment.NewLine

0 голосов
/ 05 июля 2011

попробуйте изменить это

writer.Write(input + "\n");

на

writer.WriteLine(input);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...