Witam,
czy da się, a raczej jak mogę wyciągnąć ze ścieżki do pliku postaci:
C:\folder1\folder2\plik.txt
wyciągnąć część zawierającą:
C:\folder1\ ???
Czy trzeba w to angażować wyrażenia regularne, czy są może jakieś prostsze sposoby?
Witam,
czy da się, a raczej jak mogę wyciągnąć ze ścieżki do pliku postaci:
C:\folder1\folder2\plik.txt
wyciągnąć część zawierającą:
C:\folder1\ ???
Czy trzeba w to angażować wyrażenia regularne, czy są może jakieś prostsze sposoby?
using System.IO;
FileInfo file = new FileInfo(@"C:\folder1\folder2\plik.txt");
string directory = file.Directory.FullName;
albo jak chcesz wydobyć pierwszy folder
using System.IO;
FileInfo file = new FileInfo(@"C:\folder1\folder2\plik.txt");
DirectoryInfo directoryInfo = file.Directory;
while(directoryInfo.Parent != null)
{
directoryInfo = directoryInfo.Parent;
}
string directory = directoryInfo.FullName;
chemicalkash napisał(a)
using System.IO;
FileInfo file = new FileInfo(@"C:\folder1\folder2\plik.txt");
string directory = file.Directory.FullName;
albo jak chcesz wydobyć pierwszy folder
using System.IO;
FileInfo file = new FileInfo(@"C:\folder1\folder2\plik.txt");
DirectoryInfo directoryInfo = file.Directory;
while(directoryInfo.Parent != null)
{
directoryInfo = directoryInfo.Parent;
}
string directory = directoryInfo.FullName;
W pierwszym przypadku dostaję:
C:\folder1\folder2
natomiast w drugim:
C:\
nie do końca o takie rozwiązanie mi chodzi:/ chciałbym dostać tylko:
C:\folder1\
czyli wszystko sprowadza się do tego czy mogę jakoś zdefiniować liczbę katalogów które chcę wybrać ze ścieżki?
Można i tak: string s = File.Name;
int i = s.Substring(3).IndexOf('');
s = s.Substring(0, i);
Nie testowałem (nie mam przy sobie kompilatora), ale powinno działać.
Zawsze trzeba za ręczkę poprowadzić?
private static string GetFolderPath(string filePath,int depth)
{
FileInfo file = new FileInfo(filePath);
DirectoryInfo directoryInfo = file.Directory;
List<string> folderNames = new List<string>(){directoryInfo.FullName};
while(directoryInfo.Parent != null)
{
directoryInfo = directoryInfo.Parent;
folderNames.Insert(0 , directoryInfo.FullName);
}
if(folderNames.Count > depth)
{
return folderNames[depth];
}
return String.Empty;
}
W twoim przypadku jako depth musisz podać 1. Mam nadzieje, że teraz już dasz radę.
Chemicalkash wybacz moją niewiedzę, ale jestem dopiero na etapie nauki. Dzięki za pomoc!
W takim razie próbuj uczyć się na podstawie udzielanych Ci podpowiedzi, a nie rządaj gotowych rozwiązań.
Bardzo efektywne musi być rozwiązanie z tworzeniem FileInfo, DirectoryInfo i pętlami :|
Do operowania na ścieżkach służy klasa Path:
string fullPath = @"C:\folder1\folder2\plik.txt";
string myPath = Path.GetDirectoryName(Path.GetDirectoryName(fullPath)); // myPath = C:\folder1
chemicalkash napisał(a)
W takim razie próbuj uczyć się na podstawie udzielanych Ci podpowiedzi, a nie rządaj gotowych rozwiązań.
Jeżeli podpowiedź nie wnosi nic ponad to co już wiem, to nie wiem co mam z niej wyciągać. A jeżeli Ci ciężko, to zwyczajnie nie odpisuj, jakoś wytrzymam bez tych Twoich jakże cennych gotowych rozwiązań.