2015-04-01 2 views
0

Итак, я изучаю, как разрабатывать программное обеспечение, и я столкнулся с проблемой. Когда я создаю форму в Visual Studio и он открыть документ или открыть что-то еще, когда я нажимаю кнопку, он у меня указывая здесь:Как запустить программу в той же папке?

C:\User\MyName\Documents\TestApp\test.txt 

То, что я хочу знать, как я могу получить его, где программа просто просматривает папку TestApp и проходит через C: Drive? Скажем, все файлы, необходимые для запуска программы, находятся в папке TestApp.

+0

Вы ищете http://stackoverflow.com/questions/6041332/best-way-to-get-application-folder-path? – Corak

+0

По отношению к вашей предыдущей ссылке: : AppDomain.CurrentDomain.BaseDirectory, вероятно, наиболее полезен для доступа к файлам, местоположение которых относительно каталога установки приложения. В приложении ASP.NET это будет корневой каталог приложения, а не подпапка bin - это, вероятно, то, что вы обычно хотите. В клиентском приложении это будет каталог, содержащий основной исполняемый файл. | Позвольте мне закодировать его как таковой без необходимости проходить через C: \\ ... диск и все, и я бы сказал, что start.process ("TestApp \\ Test.txt") – Daedric

ответ

2

Если вы знаете, что ваше приложение будет запускаться с одного и того же места каждый раз (например, в папке), вы можете вызвать метод GetCurrentDirectory(). Это вернет строку текущего каталога, из которого выполняется ваше приложение.

String pwd = GetCurrentDirectory(); //Contains something like C:\Users\Daedric\TestApp\ 
String finalString = Path.Combine(pwd, "test.txt"); //As per Corak 
+0

Пожалуйста, используйте [System. IO.Path.Combine] (https://msdn.microsoft.com/library/fyy7a5kt.aspx) для объединения путей. Не используйте конкатенацию строк. – Corak

+0

@Corak Добавлено, я не мог вспомнить, что GetCurrentDirectory дал вам косые черты или нет, теперь мне это не нужно! – Mathemats

+0

«Теперь мне не нужно!» - в точку.^_^ – Corak

0

Кроме выше ответа, следующий пример может помочь вам понять, как Path работы:

class Program 
    { 
     static void Main() 
     { 
     string[] pages = new string[] 
     { 
      "cat.aspx", 
      "really-long-page.aspx", 
      "test.aspx", 
      "invalid-page", 
      "something-else.aspx", 
      "Content/Rat.aspx", 
      "http://dotnetperls.com/Cat/Mouse.aspx", 
      "C:\\Windows\\File.txt", 
      "C:\\Word-2007.docx" 
     }; 
     foreach (string page in pages) 
     { 
      string name = Path.GetFileName(page); 
      string nameKey = Path.GetFileNameWithoutExtension(page); 
      string directory = Path.GetDirectoryName(page); 
      // 
      // Display the Path strings we extracted. 
      // 
      Console.WriteLine("{0}, {1}, {2}, {3}", 
      page, name, nameKey, directory); 
     } 
     } 
    } 

Пример вывода будет выглядеть так:

Входные C: \ Windows \ File.txt GetFileName: File.txt GetDirectoryName: C: \ Windows

1

Вам необходимо запустить файл из папки вашего приложения?

Application.StartupPath 

для запуска файла

Process.Start(Application.StartupPath + @"\test.txt"); 
0

GetCurrentDirectory не правильный метод, чтобы использовать в качестве возвращаемого значения могут изменяться во время ваше приложение работает. Вы можете увидеть это, просто выполнив следующие действия в консольном приложении:

Console.WriteLine(Directory.GetCurrentDirectory()); 
Directory.SetCurrentDirectory(@"c:\temp\"); 
Console.WriteLine(Directory.GetCurrentDirectory()); 

Вы можете использовать следующий, чтобы дать вам место сборки:

Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) 
Смежные вопросы