所以我正在制作一个Tic Tac Toe应用程序,并创建了一个链接到该程序的文本文件,以保存以下信息:
我知道计时器对于像Tic Tac Toe这样的快速游戏是多余的,但我将来会将其用于其他程序。
我想使用该程序执行此操作,以便可以将其传输到任何计算机,并且仍然可以访问该文件而无需用户输入。
我尝试的代码是:
string file_name = Path.Combine(Environment.CurrentDirectory, "Tic Tac Toe\\HighScores.txt");
但这只是在Debug文件夹中找不到文件的位置。该应用程序完全是一个控制台应用程序。
答案 0 :(得分:1)
可能有一个应用程序的配置文件,并将目录名存储在那里。
MS的一个老例子,但仍应适用......
答案 1 :(得分:1)
尝试将文件专用于固定的子目录:
\ TicTacToe.exe \设置\ settings.cfg
因此路径取决于您的可执行文件。
您将通过调用Directory.GetCurrentDirectory()
您可以通过设置Environment.CurrentDirectory
处理这种情况的常用方法是上述方法。
另一种方法是使用%appdata%path之类的用户指定目录,并在那里创建一个专用目录。
%APPDATA%\井字游戏\ settings.cfg
每次应用程序启动时,都应查找文件夹%appdata%\ TicTacToe \
如果存在,则您的应用程序已与该用户一起执行。 如果没有,只需创建一个新的,所以我们知道它是第一次运行。
您可以通过调用
获取%appdata%路径Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
我会做什么的例子
private void setUp(){
string filename = "settings.cfg";
string dir = "TicTacToe";
string appdata =Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string fullpath = Path.Combine(Path.Combine(appdata,dir),filename);
//check if file exists, more accurate than just looking for the folder
if(File.Exists(fullpath )){
//read the file and process its content
}else{
Directory.CreateDirectory(Path.Combine(appdata,dir)); // will do nothing if directory exists, but then we have a bug: no file, but directory available
using (FileStream fs = File.Create(fullpath))
{
Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
// Add some information to the file.
fs.Write(info, 0, info.Length);
}
}
}
希望它有所帮助。