Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sortiranje fajlova

[es] :: Java :: Sortiranje fajlova

[ Pregleda: 4012 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

antraks
banja luka, Bih

Član broj: 226703
Poruke: 203
213.91.86.*



+1 Profil

icon Sortiranje fajlova26.06.2018. u 00:51 - pre 76 meseci
Napravio sam mali programcic sebi koji pravi spisak pjesama na cd-u. I radi odlicno. Ali ponekad mi se pojavi mali problem.
Funkcija listFiles() klase File uvijek vrati sortiran niz fajlova ali po abecedi, a to mi ne treba. Da pojasnim, ako bi pravi spisak bio ovako:
1. Ime pjevaca - pjesma 1
2. Ime pjevaca - pjesma 2
.
.
.
.
20. Ime pjevaca - pjesma 20
21. IME PJEVACA - Pjesma 21
22. IME PJEVACA - Pjesma 22


Kad pokrenem programcic dobijem ovo:
1. IME PJEVACA - Pjesma 21
2. IME PJEVACA - Pjesma 22
3. Ime pjevaca - pjesma 1
.
.
.
.
itd

Treba mi da bude spisak pjesama onako kako je narezano na cd-u. Mislio sam iskoristiti funkciju lastModified() ali opet ne pali.
Pitanje je. Kako uraditi da ne spisak ne bude sortiran abecedno?

Code:

public class Muzika {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        File spisak=new File("spisak.txt");
        FileWriter fw= new FileWriter(spisak, true);
        File dir= new File("E:\\");
        File[] folderi= new File[dir.listFiles().length];
        folderi=dir.listFiles();
        int k=1;
        for(File f: folderi)
        {
            fw.write(k+". "+f.getName()+"\n");
            fw.flush();
            k++;
        }
        fw.close();
    }
}
 
Odgovor na temu

FooLControL
Serbia

Član broj: 168531
Poruke: 74
89.216.50.*



+8 Profil

icon Re: Sortiranje fajlova26.06.2018. u 06:42 - pre 76 meseci
Metoda listFiles ne garantuje da ce vratiti niz fajlova po nekoj odredjenoj vrsti sortiranja.

Mislim da ti je najbolje da iskoristis list metodu, koja ti vraca niz naziva fajlova (isto ne garantuje da ce vratiti uvek isto sortiran niz) i nad njima primeni algoritam sortiranja koji tebi odgovara, i potom tako sortirani niz ispisi u fajl.
 
Odgovor na temu

antraks
banja luka, Bih

Član broj: 226703
Poruke: 203
213.91.86.*



+1 Profil

icon Re: Sortiranje fajlova26.06.2018. u 09:14 - pre 76 meseci
Ja kako god sam pokusao listFiles vrati uvijek sortirano po nekom redu koji mi ne odgovara. Ako nista stavi velika slova ispred malih. Pokusacu da list metodom pa cu da vidim.
Pokusao sam i sa Arrays.sort() sa komparatorom ali nije upalilo, ne znam po cemu da poredim.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.vocus.co.nz.



+373 Profil

icon Re: Sortiranje fajlova26.06.2018. u 12:00 - pre 76 meseci
Sta znaci "kako je narezano na CDu"?
Ako koristis File Explorer, kako tacno vidis narezani redosled?
 
Odgovor na temu

antraks
banja luka, Bih

Član broj: 226703
Poruke: 203
213.91.86.*



+1 Profil

icon Re: Sortiranje fajlova27.06.2018. u 01:04 - pre 76 meseci
Citat:
plague: Sta znaci "kako je narezano na CDu"?
Ako koristis File Explorer, kako tacno vidis narezani redosled?


Kako da objasnim a da ne zbunim narod? :)
Npr. kad narezujem neke pjesme ja poredam po abecedi, nevazno mala ili velika slova.
Neka je izgled u file exploreru ovakav
1. cekam cekam
2. daleko od majke
3. DEVOJCICE MOJA
.
.
.


Kada pokrenem svoj mali programcic i upisem u neki txt fajl, dobijem ovakav redoslijed.
1. DEVOJCICE MOJA
2. cekam cekam
3. daleko od majke
.
.
.
.

Metode listFiles() i list() odmah sortiraju po abecedi i po velikim/malim slovima (ali ne znam tacno na koji nacin). A meni treba samo da redoslijed bude onako kako je narezano.
Ako sam uspio ikako da pojasnim. :)
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12868



+4787 Profil

icon Re: Sortiranje fajlova27.06.2018. u 01:20 - pre 76 meseci
A sta bi falilo da sortiras nakon sto dobijes listu fajlova?
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.vocus.co.nz.



+373 Profil

icon Re: Sortiranje fajlova27.06.2018. u 09:27 - pre 76 meseci
Ok, hoces da sortiras po imenu fajla. Na dobrom si putu bio sa Arrays.sort().
Citat:
antraks:
Pokusao sam i sa Arrays.sort() sa komparatorom ali nije upalilo, ne znam po cemu da poredim.


Ako hoces da ignorise mala/velika slova:
Code (java):

Arrays.sort(folderi, Comparator.comparing(File::getName, String::compareToIgnoreCase));
 

Ako neces:
Code (java):

Arrays.sort(folderi, Comparator.comparing(File::getName));
 
 
Odgovor na temu

antraks
banja luka, Bih

Član broj: 226703
Poruke: 203
213.91.86.*



+1 Profil

icon Re: Sortiranje fajlova27.06.2018. u 11:11 - pre 76 meseci
Citat:
Shadowed: A sta bi falilo da sortiras nakon sto dobijes listu fajlova?


Citat:
plague: Ok, hoces da sortiras po imenu fajla. Na dobrom si putu bio sa Arrays.sort().


Ako hoces da ignorise mala/velika slova:
Code (java):

Arrays.sort(folderi, Comparator.comparing(File::getName, String::compareToIgnoreCase));
 

Ako neces:
Code (java):

Arrays.sort(folderi, Comparator.comparing(File::getName));
 



Pravim spisak pjesama na cd-u. Ne bi onda bio odgovarajuci redoslijed. Ja necu nikakvo sortiranje, u tome je poenta. Nego kad se pozove metoda listFiles() vrati niz fajlova ali sortiran po nekom pravilu. Ja samo hocu da ih ispise po redu kako se pojavljuju.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.vocus.co.nz.



+373 Profil

icon Re: Sortiranje fajlova27.06.2018. u 11:24 - pre 76 meseci
Citat:
Ja samo hocu da ih ispise po redu kako se pojavljuju.

Kako se pojavljuju gde?

Rekao si:
Citat:

Neka je izgled u file exploreru ovakav
1. cekam cekam
2. daleko od majke
3. DEVOJCICE MOJA

Ovo je sortirano po imenu fajla. To soritranje radi File Explorer, a ne tvoje narezivanje.

Edit: Ok, izgleda da postoje sorirani i nesortirani file system-i. Videcu kako se disk ponasa.

Nisam siguran da je to moguce iz vise razloga:

1. Ako narezes nekim svojim redosledom koji je totalno nasumican, da li postoji neka aplikacija koja kada cita taj disk prikazuje isti redosled kojim si ti "narezivao".
Ako postoji takva aplikacija - znaci da je to sortiranje zapravo odrzano na disku sto znaci da mozda postoji nacin da ga procitas iz jave tako.
Ako ne postoji takva aplikacija - mozda je i dalje zadrzan sorting samo sto onda nisi siguran da li da dalje istrazujes uopste.

2. Kako Java cita fajlove i koja implementacija File Systema se koristi.

3. Zavisi od media
CD-ROM kaze sledece:
Citat:

5. Sorting Names or Extensions
Where ISO9660 requires file or directory names or extensions to be sorted, the usual ASCII collating sequence is used. That is, two different names or extensions are compared as follows:

ASCII blanks (32) are added to the right end of the shorter name or extension, if necessary, to make it as long as the longer name or extension.
The first (leftmost) position in which the names or extensions are not identical determines the order. The name or extension with the lower ASCII code in that position appears first in the sorted order.

Sto govori da na disku nema veze kako si ti u svom "narezivacu" sortirao.

Za DVD ne mogu da nadjem.

Napomena: Nisam nikada probao ovo. Verovatno se moze resiti ako imas custom FileSystem implementaciju u krajnjem slucaju, ali deluje mi kao zestok overkill.


[Ovu poruku je menjao plague dana 27.06.2018. u 13:06 GMT+1]
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12868



+4787 Profil

icon Re: Sortiranje fajlova27.06.2018. u 13:35 - pre 76 meseci
Citat:
antraks:Nego kad se pozove metoda listFiles() vrati niz fajlova ali sortiran po nekom pravilu.


U tom pravilu cuci zec :)
To pravilo trebas implementirati u svom sortiranju. To je ono isto pravilo koje izvrsavas u glavi dok sortiras fajlove na cd-u.
E sad, ako je pravilo "svidja mi se ovaj redosled" onda, s obzirom da program koji pises nema pristup podatku o tome kako se tebi svidja, moras tu informaciju nekako preneti. Mozes to na vise nacina. Npr. mozes da na pocetku imena fajla stavljas brojeve (001, 002, 003, ...) i onda sortiranje po imenu obavlja posao. Mozes takodje da snimis i fajl sa spiskom po kojem ti redosledu trebaju. Tada cak i ne moras da dobijas listu fajlova iz fajl sistema vec samo da procitas iz tog fajla. To moze biti obican txt fajl ili, jos bolje, m3u/m3u8 pa onda mozes i u player-u otvoriti direktno taj fajl. M3u fajl je takodje tekstualni fajl i jednostavan za kreiranje/citanje.
 
Odgovor na temu

antraks
banja luka, Bih

Član broj: 226703
Poruke: 203
213.91.86.*



+1 Profil

icon Re: Sortiranje fajlova27.06.2018. u 21:39 - pre 76 meseci
Koristim ashampoo burning studio za narezivanje i kada ubacim pjesme tamo on ih sortira po abecedi nevazno da li su mala ili velika. Moze ici ovako
1. pjesma 1
2. PJESMA 2
3. pjesma 3

To je valjda i neki raspored jer kada pustis mp3 cd pjesme idu po nekom redu. Zar ne??
Meni samo treba da isprintam taj redoslijed koji ide.
Zasad sam poceo sve pjesme pisati mali slovima, brisati ime izvodjaca. Ali mi nije jasno nikako zasto spisak pjesama koje napravim ja u programu bude drugaciji od onoga kako pokazuje file explorer. Postavicu sliku nekad kasnije pa ce biti mnogo jasnije da vas ne zbunjujem.
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
..5.69.111.static.snap.net.nz.



+373 Profil

icon Re: Sortiranje fajlova28.06.2018. u 02:23 - pre 76 meseci
Razlicit je jer ti mislis da je resoled pesama sacuvan ali nije(ovo zavisi od filesystema gde se nalazi file).
Dakle, obe aplikacije sortiraju isto kao sto ti mi ti kazemo da sortiras koristecu Arrays.sort() samo ti to ne vidis jer nemas pristup kodu.

Edit: Previse komplikujes, sortianje niza je sasvim normalna procedura koja se cesto primenjuje u programiranju. Koristi prvi pristup koji sam naveo par postova ranije.
 
Odgovor na temu

antraks
banja luka, Bih

Član broj: 226703
Poruke: 203
213.91.86.*



+1 Profil

icon Re: Sortiranje fajlova29.06.2018. u 13:19 - pre 76 meseci
Jasno je meni sve sto vi govorite nije to sporno. Nego samo hocu da kazem da redoslijed koji bude kad otvorim cd u file exploreru i u spisku koji generisem nije isti. Koji je sad od ta dva spiska "pravi"? Mora biti neki redoslijed kojim se pjesme da se izvode kad se puste na nekom mp3 player-u. Rijesio sam problem tako sto sve pisem malim slovima i slicno. Ali me zanimalo kako bi to izgledalo u javi da se uradi.
Pokusacu sa komparatorom pa cu da vidim kako ce da bude. Hvala
 
Odgovor na temu

[es] :: Java :: Sortiranje fajlova

[ Pregleda: 4012 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.