Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример: вывод списка файлов в каталоге




Пример: вывод списка файлов в каталоге

File dir = new File(args[0]); File[] filelist; JavaFiles jf = new JavaFiles(); // Now, pass that filter to list(). filelist = dir. listFiles(jf); // Display the filtered files. System. out. println(" \nJava Source Files: " ); for(File f: filelist) if(! f. isDirectory()) System. out. println(f. getName()); // A simple file filter for Java source files. class JavaFiles implements FileFilter { public boolean accept(File f) {         if(f. getName(). endsWith(". java" )) return true;         return false; } }

 

Сжатие файлов

GZIPInputStream

GZIPOutputStream

ZipInputStream

ZipOutputStream

These classes create compressed files in either the GZIP or ZIP format. The advantage is that your data files will be in a format that standard tools can understand. However, if that is not a benefit to your application, then using DeflaterOutputStream and InflaterInputStream directly is a bit more efficient.

Считывание содержимого Zip-архива.

В Java для чтения Zip-архивов применяется класс ZipInputStream. В каждом таком архиве всегда требуется просматривать отдельные записи (entries). Метод getNextEntry возвращает описывающий запись объект типа ZipEntry. Метод read класса ZipInputStream изменяется так, чтобы он возвращал -1 в конце текущей записи (а не просто в конце Zip-файла). Далее вызывается метод closeEntry для получения возможности перехода к считыванию следующей записи.

ZipInputStream zin = new ZipInputStream(new FileInputStream(zipName));
ZipEntry entry;
while ((entry = zin. getNextEntry())! = null) {
//анализ entry
//считывание содежимого
zin. closeEntry();
}
zin. close();

Для считывания содержимого конкретной записи из Zip-файла эффективнее использовать не стандартный метод read, а методы какого-то обладающего большими возможностями потокового фильтра. Например, для считывания текстового файла, находящегося внутри Zip-архива, можно применить следующий цикл:

Scanner in = new Scanner(zin);
while (in. hasNextLine()) {
//выполнение операций с in. nextLine()
}

Запись в Zip-архив.
Для записи Zip-файла применяется класс ZipOutputStream. Для каждой записи, которую требуется поместить в Zip-файл, создается объект ZipEntry. Желаемое имя для файла передается конструктору ZipEntry; тот устанавливает устанавливает остальные параметры, вроде даты создания файла и метода распаковки. При желании эти параметры могут переопределяться. Далее вызывается метод putNextEntry класса ZipOutputStream для начала процесса записи нового файла. После этого данные самого файла отправляются потоку ZIp. По завершении вызывается метод closeEntry. Затем все эти действия выполняются повторно для всех остальных файлов, которые требуется сохранить в Zip-архиве. Ниже приведена общая схема необходимого кода:

FileOutputStream fout = new FileOutputStream(" test. zip" );
ZipOutputStream zout = new ZipoutputStream(fout);
//Для всех файлов:
{
ZipEntry ze = new ZupEntry(" имя файла" ); //Имя файла - имя файла в архиве
zout. putNextEntry(ze);
//отправка данных в поток zout
zout. closeEntry();
}
zout. close();

 

 

 

 

Это называется стандартной реализацией

  package app21. pkg1;   import java. io. *; import java. util. Date;   class Test implements Serializable { int [][]data; Date time; public Test(int [][]d){    data = d;    time = new Date(); } }   public class App211 implements Serializable { // transient int id; // при transient не показывается информация. id инициализируется нулем.   /** * @param args the command line arguments    */ public static void main(String[] args) throws IOException {    // TODO code application logic here    String name = " unicode. txt";    String enc = " UTF-16";    BufferedReader br =    new BufferedReader(        new InputStreamReader(            new FileInputStream(name), enc));                    System. out. println(br. readLine());    System. out. println(br. readLine());    br. close();            //Сериализация    int [][]d = new int[10][10];    d[0][0] = 2;    d[2][2] = 8;    Test t = new Test(d);            FileOutputStream f = new FileOutputStream(" test. txt" ); //создаю поток    ObjectOutputStream oos = new ObjectOutputStream(f); //объект, который отвечает за сериализацию.    oos. writeObject(t);    oos. close();         }     }

 

 

 

  package app21. pkg1;   import java. io. *; import java. util. Date;   class Test implements Serializable { int [][]data; Date time; public Test(int [][]d){    data = d;    time = new Date(); } }   public class App211 implements Serializable { // transient int id; // при transient не показывается информация. id инициализируется нулем.   /** * @param args the command line arguments */ public static void main(String[] args) throws IOException, ClassNotFoundException {    // TODO code application logic here    String name = " ascii. txt";    String enc = " Cp1251";    BufferedReader br =    new BufferedReader(        new InputStreamReader(            new FileInputStream(name), enc));                    System. out. println(br. readLine());    System. out. println(br. readLine());    br. close();            //Сериализация //   int [][]d = new int[10][10]; //   d[0][0] = 2; //   d[2][2] = 8; //   Test t = new Test(d); //        //   FileOutputStream f = new FileOutputStream(" test. txt" ); //   ObjectOutputStream oos = new ObjectOutputStream(f); //объект, который отвечает за сериализацию. //   oos. writeObject(t); //   oos. close(); //          FileInputStream f = new FileInputStream(" test. txt" );    ObjectInputStream ois = new ObjectInputStream(f); //объект, который отвечает за сериализацию.       Test t = (Test)ois. readObject();    ois. close();                    System. out. println(t. time);    for(int i = 0; i < t. data. length; i++) //по строкам    {                   System. out. println();        for(int j = 0; j < t. data[i]. length; j++) //по столбцам        {            System. out. print(t. data[i][j]+" " );        }    }       }   }
run: Hello, to all. Всем привет. Thu Apr 21 12: 25: 01 MSK 2016   2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...