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.
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 ;)
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.
Mozesz zrobic to tak:
var files = Directory.EnumerateFiles(@"D:\pliki", "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".txt"));
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