简体   繁体   中英

How do I get the folder for the currently open file in c#

I am writing a wizard that pulls information from a database like file. This wizard doesn't get compiled, it just runs on command. I am not sure the correct term for that.

The issue is, I need to enter more information which will manipulate the database, and I want to store the values into a csv file that I use to manipulate the database.

So the question is: How do I get the folder for the currently open file in ac# application so that I can save a csv file to that folder?

edit: The path needs to be dynamic. Each database file is stored in a separate folder. I need the wizard to save to which ever folder I just opened the file from.

edit2 : I am not opening the file programmatically. The file is being open by the user in the application. So, the user opens a file, and a bunch of database information is displayed. He then runs a wizard on that data where he can enter some coefficients, etc .. and that will change the information in the database file. I need to be able to store the coefficients he enters into the folder that contains the database file that he opened. I cannot access / change the application code, only the wizard code.

Thanks

Something like this?

    var file = "C:\\Users\\Me\\Desktop\\Test.txt";
    var fileLocation = file.Substring(0, file.LastIndexOf("\\"));

You can use this:

string path = Path.GetFullPath(Directory.GetCurrentDirectory()).TrimEnd(Path.DirectorySeparatorChar);
string directoryName = Path.GetFileName(path);

I found this solution in this thread

Get the (last part of) current directory name in C#

Try

//Or where ever the database returns the file is stored
var filename = "C:\\Temp\\File\\Test.txt";          
var path = System.IO.Path.GetDirectoryName(filename);

Should return C:\\Temp\\File

Source : https://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname(v=vs.110).aspx

Try using DirectoryInfo to get information about any directory:

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

        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM