编写一个文件,在每行的开头添加随机字符

时间:2011-07-04 21:54:40

标签: c# string windows-phone-7 file-io

我在Windows Phone 7中使用C#覆盖文件。当我这样做时,在每行的开头添加一个看似随机的字符。

为什么会这样?

代码:

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;
        }
    }

Lodaing代码:

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 个答案:

答案 0 :(得分:6)

随机字符是长度前缀;见http://msdn.microsoft.com/en-us/library/yzxa6408.aspx

您应该使用某种类型的TextWriter将字符串写入文件;不是BinaryWriter。

StreamWriter可能是最好的,然后你可以使用WriteLine方法。

答案 1 :(得分:1)

请尝试使用'\n'

,而不是使用Environment.NewLine

答案 2 :(得分:1)

您正在使用BinaryWriter进行编写,并使用TextReader进行读取。更改您的编写代码以使用StreamWriter(这是一个TextWriter)而不是BinaryWriter。这也将为您提供Naveed建议的WriteLine方法。

答案 3 :(得分:0)

尝试更改此

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

writer.WriteLine(input);