Wczytywanie/otwieranie wielu plików do pamięci

0

Witajcie,
Piszę program który ma za zadanie wczytać plik, wybrać odpowiednie komponenty z pliku i je zapisywać do nowego pliku.
Nie bardzo wiem w jaki sposób zrobić aby program wczytał mi do pamięci wiele plików z danego katalogu, chodzi oto aby za pomocą przycisku wczytać wiele plików i móc otworzyć jeden plik przejrzeć, wybrać co potrzebuje i zamknąć go i z pamięci programu wybrać kolejny nie wyłączając programu. Baza plików będzie dość spora więc dlatego chce żeby wczytał je do programu, przejrzeć, zapisać i otworzyć kolejny plik. Nie mam pojęcia jak to kodować, bo samo wczytanie pliku, wybór i zapis do pliku mam tylko wybór wielu plików i trzymanie je w pamięci. Wiem że musze to zrobic na tablicy. Byłbym wdzięczny za wszelkie porady.

0

A czym sie rozni wczytanie jednego pliku do pamieci od wczytania kilku plikow do pamieci?;p Robisz to dokladnie tak samo. Zakladajac, ze te pliki maja jakas zawartosc tekstowa, mozesz zrobic tablice stringow i rozmiarze takim jak ilosc plikow i potem w petli do kolejnych elementow tabeli wczytywac te pliki, np tak:

var fileContents = new string[N];

for(int i = 0; i < N; i++)
{
	using(var reader = new StreamReader("sratatata.txt"))
	{
		fileContenst[i] = reader.ReadAllLines();
	}
}

Pisane z łapy. Dodatkowo trzeba jeszcze tutaj obsluzyc pamieciozernosc, wyjatki otworzenia pliku itd ;)

0

Tak, ale to daje mi czytanie pliku linijka po linijce, to mam , tylko że ilość plików może być zmienna, jak dla mnie wczytanie wielu plików jest lepsze niż uruchamiać program i wybierać za każdym razem, tak to jak wybieram jeden potem go już omijam ew. usuwam (nawet lepiej) i wczytuje kolejny. Problem jest jak ustawić wymiary tablicy i z kodem który pozwala wczytywać wiele plików, resztę mam.

0

Mozesz zrobic to tak:

var files = Directory.EnumerateFiles(@"D:\pliki", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".txt"));
1

nawet gotowiec jest

// Process all files in the directory passed in, recurse on any directories 
    // that are found, and process the files they contain.
    public static void ProcessDirectory(string targetDirectory) 
    {
        // Process the list of files found in the directory.
        string [] fileEntries = Directory.GetFiles(targetDirectory);
        foreach(string fileName in fileEntries)
            ProcessFile(fileName);

        // Recurse into subdirectories of this directory.
        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach(string subdirectory in subdirectoryEntries)
            ProcessDirectory(subdirectory);
    }

https://msdn.microsoft.com/pl-pl/library/07wt70x2%28v=vs.110%29.aspx

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