我在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;
}
}
答案 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);