我正在编写一个从文件数据库中提取信息的向导。这个向导不会被编译,它只是在命令上运行。我不确定这个词的正确用语。
问题是,我需要输入更多信息来操作数据库,我想将值存储到用于操作数据库的csv文件中。
所以问题是:如何在c#应用程序中获取当前打开文件的文件夹,以便将csv文件保存到该文件夹?
编辑:路径需要是动态的。每个数据库文件都存储在单独的文件夹中。我需要向导保存到我刚打开文件的文件夹。
edit2: 我没有以编程方式打开文件。该文件由用户在应用程序中打开。因此,用户打开文件,并显示一堆数据库信息。然后他运行一个关于该数据的向导,在那里他可以输入一些系数等等。这将改变数据库文件中的信息。我需要能够将他输入的系数存储到包含他打开的数据库文件的文件夹中。我无法访问/更改应用程序代码,只能使用向导代码。
由于
答案 0 :(得分:0)
这样的东西?
var file = "C:\\Users\\Me\\Desktop\\Test.txt";
var fileLocation = file.Substring(0, file.LastIndexOf("\\"));
答案 1 :(得分:0)
您可以使用:
string path = Path.GetFullPath(Directory.GetCurrentDirectory()).TrimEnd(Path.DirectorySeparatorChar);
string directoryName = Path.GetFileName(path);
我在这个帖子中找到了这个解决方案
答案 2 :(得分:0)
尝试
//Or where ever the database returns the file is stored
var filename = "C:\\Temp\\File\\Test.txt";
var path = System.IO.Path.GetDirectoryName(filename);
应返回C:\ Temp \ File
来源:https://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname(v=vs.110).aspx
答案 3 :(得分:0)
尝试使用DirectoryInfo
获取有关任何目录的信息:
using System;
using System.IO;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));
if (di != null)
{
FileInfo[] subFiles = di.GetFiles();
if (subFiles.Length > 0)
{
Console.WriteLine("Files:");
foreach (FileInfo subFile in subFiles)
{
Console.WriteLine(" " + subFile.Name + " (" + subFile.Length + " bytes) " + "Directory name: "
+ di.Name + " Directory full name: " + di.FullName);
}
}
Console.ReadKey();
}
}
}
}