import java.io.*;
public class rozcvicka8 {
// zlepovanie suborov pomocou vyhladavania
public static void zlep_bySearch(String path,String outfname) throws IOException
{
File aktDir = new File(path); // chceme vylistovat adresar path
File[] subory = aktDir.listFiles(); // ziskame zoznam subrov
if (subory != null) // ak nie je prazdny (nebolo nutne)
{
FileOutputStream fw = new FileOutputStream(new File(outfname)); // subor, kam budeme zapisovat
for (int poradie = 0; poradie < subory.length; poradie++) // chceme kazdy subor prilepit prave raz
{ // premenna "poradie" urcuje, ktore poradove cislo prave chceme prilepit
for (int j = 0; j < subory.length; j++) // hladame medzi vsetkymi subormi, ten spravny v poradi
{
File frName = new File(path+subory[j].getName());
FileInputStream fr = new FileInputStream(frName); // otvorime subor
int poradove_cislo=fr.read();
if (poradove_cislo==poradie) // porovname prvy znak s "i" - sedi poradie ?
{
int c;
while ((c=fr.read())!=-1) // citame, kym nedorazime na koniec suboru
fw.write(c); // a zapisujeme do vystupneho suboru
}
fr.close(); // zavrieme citany subor
}
}
fw.close(); // zavrieme zapisovany subor
}
}
// alternativne zlepovanie suborov, ktore si najprv utriedime podla poradia do pola
public static void zlep_bySort(String path,String outfname) throws IOException
{
File aktDir = new File(path); // chceme vylistovat adresar path
File[] subory = aktDir.listFiles(); // ziskame zoznam subrov
if (subory != null) // ak nie je prazdny (nebolo nutne)
{
FileOutputStream fw = new FileOutputStream(new File(outfname)); // subor, kam budeme zapisovat
File[] sortsubory=new File[subory.length]; // upraceme si subory podla poradia do pola
int i;
for (i = 0; i < subory.length; i++) // ideme utriedit vstupne subory
{
File frName = new File(path+subory[i].getName());
FileInputStream fr = new FileInputStream(frName); // otvorime subor
int poradove_cislo=fr.read(); // nacitame zo suboru poradove cislo
sortsubory[poradove_cislo]=frName; // ulozim subor na spravne miesto v poradi do pola
fr.close(); // zavrieme citany subor
}
for (i = 0; i < subory.length; i++) // chceme kazdy subor prilepit prave raz
{
File frName = new File(path+sortsubory[i].getName());
FileInputStream fr = new FileInputStream(frName); // otvorime subor - teraz uz v spravnom poradi
fr.read(); // musime preskocit poradove cislo ulozene v subore
int c;
while ((c=fr.read())!=-1) // citame, kym nedorazime na koniec suboru
fw.write(c); // a zapisujeme do vystupneho suboru
fr.close(); // zavrieme citany subor
}
fw.close(); // zavrieme zapisovany subor
}
}
public static void main(String [] args)
{
try {
zlep_bySearch("data/","search.jpg"); // zlepuje pomocou vyhladavania subory z podadresara "data"
zlep_bySort("data/","sort.jpg"); // zlepuje pomocou triedenia subory z podadresara "data"
} catch (IOException e) {
e.printStackTrace();
}
}
}
|