Wczytywanie/otwieranie wielu plików do pamięci

2015-02-06 09:26
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.

edytowany 1x, ostatnio: Miecznik, 2015-02-06 09:33
Nie używaj prefiksów/postfiksów w tytułach wątków - od podawania nazwy języka/technologii są tagi; - furious programming 2015-02-06 22:57

Pozostało 580 znaków

2015-02-06 09:39
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 ;)

var fileContenst = File.ReadAllLines(&quot;sratatata.txt&quot;); - Azarien 2015-02-06 10:00

Pozostało 580 znaków

2015-02-06 09:50
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.

edytowany 1x, ostatnio: Miecznik, 2015-02-06 09:56

Pozostało 580 znaków

2015-02-06 10:08
0

Mozesz zrobic to tak:

var files = Directory.EnumerateFiles(@"D:\pliki", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".txt"));
lol, a czemu nie Directory.EnumerateFiles(@&quot;D:\pliki", "*.txt", SearchOption.AllDirectories) ? - krwq 2015-02-06 10:17
lol, dlatego, ze teraz mozna latwiej dodawac inne rozszerzenia plikow (autor nie napisal co to za pliki, ja tylko zalozylem ze sa textowe) - FakeAccount 2015-02-06 10:20
Sorka panowie że nie napisałem o jaki plik chodzi, o html ale to jest raczej bez problemu . - Miecznik 2015-02-06 10:27
@FakeAccount, jestem mocnym przeciwnikiem kompikowania kodu z powodu "bo może się kiedyś przydać", z reguły się nie przydaje, a tracisz więcej czasu - krwq 2015-02-06 10:30

Pozostało 580 znaków

2015-02-06 10:10
.Al
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[...]y/07wt70x2%28v=vs.110%29.aspx

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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