如何获取文件的文件路径我只知道其名称? C#

时间:2015-11-19 16:07:55

标签: c#

所以我正在制作一个Tic Tac Toe应用程序,并创建了一个链接到该程序的文本文件,以保存以下信息:

  • 名称
  • 获胜的时间
  • 困难

我知道计时器对于像Tic Tac Toe这样的快速游戏是多余的,但我将来会将其用于其他程序。

  • 我的问题是如何只知道文件的名称才能找到文件的完整路径?

我想使用该程序执行此操作,以便可以将其传输到任何计算机,并且仍然可以访问该文件而无需用户输入。

我尝试的代码是:

string file_name = Path.Combine(Environment.CurrentDirectory, "Tic Tac Toe\\HighScores.txt");

但这只是在Debug文件夹中找不到文件的位置。该应用程序完全是一个控制台应用程序。

2 个答案:

答案 0 :(得分:1)

可能有一个应用程序的配置文件,并将目录名存储在那里。

MS的一个老例子,但仍应适用......

How to store and retrieve custom information from an application configuration file by using Visual C#

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

希望它有所帮助。