2015-11-19 99 views
1

所以我做一个井字应用程序,创建链接到该程序保持以下信息的文本文件:如何获取文件的文件路径我只知道名称? C#

  • 名称
  • 的时间了,赢得
  • 难度

我知道计时器对于像井字游戏这样的快速游戏是多余的,但我将在未来用于其他程序。

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

我想用程序来做到这一点,以便它可以传输到任何计算机,并且仍然能够访问该文件,而无需用户输入它。

我试过的代码是:

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

但这只是看起来在Debug文件夹,该文件的位置没有确定。该应用程序完全是控制台应用程序。

+2

那么你想搜索整个硬盘? –

+0

许多文件可以具有相同的名称,因此您必须知道在哪里查找。 – buffjape

+0

您是否认为“CurrentDirectory”会在程序运行的任何地方?因此,如果您将文件复制到驱动器的根目录,那么它可能会在那里? –

回答

1

尝试奉献的文件在一个固定的子目录:

\ TicTacToe.exe \设置\ settings.cfg

所以路径取决于您的可执行文件。

你会通过调用Directory.GetCurrentDirectory()

取目录,您可以通过设置Environment.CurrentDirectory

来处理这种情况的一种常见方式设置所需的目录上面所描述的。

另一种方法是使用用户指定的目录,如%appdata%路径并在那里创建一个专用目录。

%APPDATA%\井字游戏\ settings.cfg

每次应用程序启动时,它应该查找的文件夹%APPDATA%\井字游戏\

如果它存在,你的应用程序已经与该用户执行。 如果没有,只需创建一个新的,所以我们知道这是第一次运行。

你可以通过调用什么,我会做

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

希望它帮助

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

范例中得到%APPDATA%路径。

+0

那么在配置文件中会是什么?高分数据? –

+0

必须保存的所有数据:名称, 赢得时间, 难度 – Noli

1

也许你的应用程序有一个配置文件,并在其中存储目录名称。

从MS一个古老的例子,但仍然应该适用......

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

+0

对不起......但我该怎么做?我不得不自学C#,只做了大约14周 –

+0

谢天谢地,配置文件是一个特性,Visual Studio通过其项目设置提供了很多直接支持。它会根据项目名称生成一个可以在代码中使用的名称空间。 – Katana314

相关问题