Salah satu opsinya adalah melakukan System.IO.Directory.GetParent () beberapa kali. Apakah ada cara yang lebih baik untuk memindahkan beberapa folder ke atas dari tempat perakitan pelaksana berada?
Apa yang saya coba lakukan adalah menemukan file teks yang berada satu folder di atas folder aplikasi. Namun perakitan itu sendiri ada di dalam bin, yang merupakan beberapa folder jauh di dalam folder aplikasi.
c#
.net
console-application
pengembang747
sumber
sumber
Directory.SetCurrentDirectory(@"..\..\..\..");
Jawaban:
Cara sederhana lainnya adalah melakukan ini:
Catatan Ini naik dua tingkat. Hasilnya adalah:
newPath = @"C:\Folder1\Folder2\";
sumber
Path.Combine
saat Anda menambahkan garis miring terbalik secara manual. Pertimbangkan untuk menggunakanPath.Combine(path, "..", "..")
sebagai gantinya.Jika c: \ folder1 \ folder2 \ folder3 \ bin adalah path maka kode berikut akan mengembalikan path base folder dari folder bin
yaitu, c: \ folder1 \ folder2 \ folder3
jika Anda ingin path folder2 maka Anda bisa mendapatkan direktori dengan
maka Anda akan mendapatkan jalur sebagai c: \ folder1 \ folder2 \
sumber
Anda dapat menggunakan
..\path
untuk naik satu level ke atas,..\..\path
untuk naik dua level dari jalur.Anda juga dapat menggunakan
Path
kelas.Kelas C # Path
sumber
Inilah yang paling berhasil untuk saya:
string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../"));
Mendapatkan jalur yang 'benar' bukanlah masalah, menambahkan '../' jelas melakukan itu, tetapi setelah itu, string yang diberikan tidak dapat digunakan, karena itu hanya akan menambahkan '../' di akhir. Mengelilinginya dengan
Path.GetFullPath()
akan memberi Anda jalur absolut, membuatnya dapat digunakan.sumber
Metode berikut mencari file yang dimulai dengan jalur startup aplikasi (folder * .exe). Jika file tidak ditemukan di sana, folder induk akan dicari hingga file tersebut ditemukan atau folder root telah dicapai.
null
dikembalikan jika file tidak ditemukan.Catatan:
Application.StartupPath
biasanya digunakan di aplikasi WinForms, tetapi juga berfungsi di aplikasi konsol; Namun, Anda harus menetapkan referensi keSystem.Windows.Forms
majelis. Anda dapat menggantiApplication.StartupPath
denganPath.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
jika Anda mau.sumber
Mungkin Anda bisa menggunakan fungsi jika Anda ingin mendeklarasikan jumlah level dan memasukkannya ke dalam fungsi?
Dan Anda bisa menyebutnya seperti ini:
sumber
C #
sumber
ini mungkin membantu
sumber
Saya memiliki beberapa direktori virtual dan saya tidak dapat menggunakan metode Direktori. Jadi, saya membuat fungsi split / join sederhana untuk mereka yang tertarik. Tidak seaman.
Jadi, jika Anda ingin naik 4, Anda hanya perlu mengubah
1
menjadi4
dan menambahkan beberapa centang untuk menghindari pengecualian.sumber
Jika Anda mengetahui folder yang ingin Anda navigasikan, temukan indeksnya lalu substring.
sumber
a
, misalnya? Bagaimana jika jalannya terlihat seperti iniC:\Folderame3\Folderame2\Folderame\...
?