Modyfikacja ścieżki do pliku

0

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?

0
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; 
0
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?

1

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ć.

0

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ę.

0

Chemicalkash wybacz moją niewiedzę, ale jestem dopiero na etapie nauki. Dzięki za pomoc!

0

W takim razie próbuj uczyć się na podstawie udzielanych Ci podpowiedzi, a nie rządaj gotowych rozwiązań.

0

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
0
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ń.

1 użytkowników online, w tym zalogowanych: 0, gości: 1