【发布时间】:2019-06-17 02:31:22
【问题描述】:
所以基本上我一直在与刽子手作斗争,我不知道如何解决第一个问题。这就是为什么我认为我可以加入另一个功能;一种使用FileStream 将单词添加到带有StreamWriter 的单词文本文件中的方法。 (我也有一个StreamReader,所以我可以看到它会选择什么随机词。)
尝试过的东西(全部:writer.WriteLine(text)):
我尝试使用
StreamWriter writer = new StreamReader(fs.ToString(), append: true)和FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)我试过
FileMode.Append(因为我想追加),但这只适用于只写模式,我也需要阅读文本。我尝试在没有 ToSting() 的情况下使用文件流,但这导致“无法从 'System.IO.FileStream' 转换为 'string'。”
我尝试在不同的程序中做同样的事情,但只使用
StreamReader和FileStream,但它仍然没有改变文本文件中的任何内容。
我实际上希望它会做什么: 我希望程序能够将字符串附加到文本文件,同时仍然能够读取所选单词。 (当您启动程序时,会从文本文件中随机选择一个单词。)
抱歉,如果这看起来很乱,这是我第一次在 stackoverflow 上提问。
所以为什么这与副本不同是因为我想附加文件,而不是写入(覆盖)它。我尝试了与“重复”完全相同的FileStream,但它只是摆脱了错误。现在我仍然被 StreamWriter 的故障所困扰。
部分代码:
private static FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
private static StreamReader reader = new StreamReader(fs);
private static string[] words = reader.ReadToEnd().Split(',');
public static Random randomizer = new Random();
private static int wordindex = randomizer.Next(0, words.Length);
public string GetWord()
{
return words[wordindex]; //returns random value out of array = random woord
}
`
而using 代表StreamWriter:
public string AddWordToFile(string word)
{
using (StreamWriter writer = new StreamWriter(fs.ToString(), append: true))
{
//bool ExistsInFile = false;
for (int i = 0; i < words.Length; i++)
{
if (words.Contains(word))
{
//ExistsInFile = true;
return "The word '" + word + "' already exists in the textfile.";
}
}
if (!words.Contains(word))
{
//ExistsInFile = false;
writer.WriteLine("," + word);
writer.Close();
return word + " added.";
}
else
{
return "Whoops, something went wrong :'I";
}
}
}
【问题讨论】:
-
@mortb 嗯......我猜它的大部分工作,但如果我像在那个帖子中那样使用它,它不会在文件中写入任何内容。我希望能够追加,它使用
FileMode.Append,但如果我这样做,我会得到一个错误,它只适用于只写..
标签: c# append filestream streamreader streamwriter