2014-12-03 129 views
-2
string curetn = Environment.CurrentDirectory; 
string path = curetn.ToString() + @"\DATA\SaveGame.txt"; 
Console.WriteLine(path); 
TextReader tr = new StreamReader(path); 

你好,我正在做一个文本冒险,我不喜欢所有我的保存文件和MP3文件在我的应用程序相同的地方。我想要将这些文件放在一个文件夹中。我希望能够使用StreamWriter和StreamReader,以便能够编写和读取文件夹中的文件。此文件也位于可分发文件夹中,不仅位于Visual Studio项目文件夹中。我尽力而为,这就是我所拥有的。我也有StreamWriter的其中之一。请帮忙!如何在文件夹中编写和读取文本文件?

编辑: 不起作用的是,它不读取行,并将它们分配给一个变量。我试图抓住它,它捕捉并显示我写的错误信息。

+1

什么不起作用?你似乎有正确的想法... – BradleyDotNET 2014-12-03 21:44:38

+0

你看过StreamWriter/StreamReader的文档吗?这里有一些简单的例子:http://www.dotnetperls.com/streamwriter和这里:http://www.dotnetperls.com/streamreader – 2014-12-03 21:44:51

+0

你的前两行等于'path = @“DATA \ SaveGame.txt” '。什么不行?你能指望什么?你的问题是什么?顺便说一句:你不能使用StreamRader/Writer来处理像* mp3 *这样的二进制文件。 – 2014-12-03 21:48:33

回答

0

如果您正在寻找简单地读取和写入文件中的行,你可以试试这个

using (StreamReader sr = new StreamReader(path)) 
{ 
    while (!sr.EndOfStream) 
    { 
     sr.ReadLine(); 
    }    
} 

string s; 
using (StreamWriter sw = new StreamWriter(path)) 
{    
    sw.WriteLine(s); 

} 
+2

如果您需要阅读整个文件,只需使用File.ReadAllText,不要打扰StreamReader – 2014-12-03 22:08:30

+0

或'File.ReadLines'' File.WriteAllLines',如果你需要它一行一行地读/写。 – 2014-12-03 22:13:59

0

所以基本上你想要做的是阅读文本文件的内容:

string data[] = File.ReadAllLines(path); // Read the text file. 
var x = data[1]; // Replace the '1' with the line number you want. 
Console.WriteLine(x); 

这是一个阅读文本文件的好方法,我认为它比打开流更好。

你也可以写,所以要节省每一次,只是这样做:

// When you want to write: 
File.WriteAllText(path, ""); 
File.AppendAllText(path, "Add a data line" + Environment.NewLine); // Environment.NewLine adds a line. 

请添加文本您需要的数据的文件。

+0

'我认为它比打开一个流更好。“你认为'File.ReadAllLines'有什么作用? BTW:它一次读取所有行到内存,懒惰版本'File.ReadLines'可能会更好。 – 2014-12-03 22:16:57

+0

@ L.B我知道,阅读所有的行很快,它可以为您节省大量代码。 – 2014-12-03 22:20:47

+0

'AppendAllText'不添加一行,简单的文本。 (默认没有换行符) – 2014-12-03 22:21:55