java tutorial - Руководство Java Commons IO - учебник java - java programming - учиться java - java basics - java for beginners



1- Введение

2- Library

 Java общин io
java - джава - учиться java - учебник java -
Java общин io
- примеры java - java-программы
 Общие Java
java - джава - учиться java - учебник java -
Общие Java
- примеры java - java-программы

3- Создать project

Создать Maven Project.

 создать в проекте maven
java - джава - учиться java - учебник java -
создать в проекте maven
- примеры java - java-программы
 Новый создать в проекте maven
java - джава - учиться java - учебник java -
Новый создать в проекте maven
- примеры java - java-программы
    • Group ID: org.wikitechy
    • Artifact ID: CommonsIOTutorial
  создание новых maven
java - джава - учиться java - учебник java -
создание новых maven
- примеры java - java-программы
  • Это изображение созданного проекта.
 Общие io учебник
java - джава - учиться java - учебник java -
Общие io учебник
- примеры java - java-программы
  • Конфигурация Maven для использования Commons IO:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.wikitechy</groupId>
    <artifactId>CommonsIOTutorial</artifactId>
    <version>0.0.1-SNAPSHOT</version>
 
 
    <dependencies>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
    </dependencies>
 
</project>
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

4- IOUtils

  • IOUtils - это утилитарный класс, который помогает быстрее обрабатывать поток данных. Если вы используете стандартный java.io, вы можете делать то, что хотите. Но хотите быстрее кодировать, экономьте время, используйте IOUtils.Смотрите Javadoc IOUtils здесь:
  • Взгляните на код, который будет обрабатываться обычным способом (используя то, что доступно в JDK).
InputStream in = new URL("http://commons.apache.org").openStream();
try {
    InputStreamReader inR = new InputStreamReader(in);
    BufferedReader buf = new BufferedReader(inR);
    String line;
    while ((line = buf.readLine()) != null) {
        System.out.println(line);
    }
} finally {
    in.close();
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • И здесь используется код класса IOUtils:
InputStream in = new URL("http://commons.apache.org").openStream();
try {
    System.out.println(IOUtils.toString(in));
} finally {
    IOUtils.closeQuietly(in);
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Глядя на два вышеприведённых кода, мы можем ясно видеть, что одна цель, но использовать IOUtils намного быстрее.

ReadURL1.java

package com.wikitechy.tutorial.commonsio.io;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
 
public class ReadURL1 {
 
   public static void readURL() throws MalformedURLException, IOException {
       InputStream in = new URL("http://commons.apache.org").openStream();
       try {
           InputStreamReader inR = new InputStreamReader(in);
           BufferedReader buf = new BufferedReader(inR);
           String line;
           while ((line = buf.readLine()) != null) {
               System.out.println(line);
           }
       } finally {
           in.close();
       }
   }
 
   public static void main(String[] args) {
       try {
           readURL();
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

ReadURL2.java

package com.wikitechy.tutorial.commonsio.io;
 
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
 
import org.apache.commons.io.IOUtils;
 
public class ReadURL2 {
 
   public static void readURL() throws MalformedURLException, IOException {
       InputStream in = new URL("http://commons.apache.org").openStream();
       try {
           System.out.println(IOUtils.toString(in));
       } finally {
           IOUtils.closeQuietly(in);
       }
   }
 
   public static void main(String[] args) {
       try {
            readURL();
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

5- FileUtils

  • Класс FileUtils содержит утилитарные методы для работы с объектами File. К ним относятся чтение, запись, копирование и сравнение файлов.Поиск Javadoc FileUtils:

FileUtilsReadFile.java

package com.wikitechy.tutorial.commonsio.fileutils;
 
 
import java.io.File;
import java.io.IOException;
import java.util.List;
 
import org.apache.commons.io.FileUtils;
 
public class FileUtilsReadFile {
 
    
   public static void readFile() throws IOException  {
       File file= new File("D:/test.txt");
       List<String>  lines= FileUtils.readLines(file);
        
       for(String s: lines)  {
           System.out.println(s);
       }
   }
    
   public static void main(String[] args) {
       try {
           readFile();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
    
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

FileUtilsTouchFile.java

package com.wikitechy.tutorial.commonsio.fileutils;
 
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import java.io.File;
 
public class FileUtilsTouchFile {
 
   public static void main(String[] args) {
 
       try {
           // E:/test not exist on disk
           File testFile = new File("E:/test.txt");
 
           // Get last modify time
 
           long fileTimestamp = testFile.lastModified();
           System.out.println("Time in milis " + fileTimestamp);
 
           // Using the touch() operation
           // If file not exists, it create file.
           // It change the file date and time stamps
           FileUtils.touch(testFile);
 
           System.out.println("Time in milis updated "
                   + testFile.lastModified());
 
       } catch (IOException ex) {
           ex.printStackTrace();
       }
 
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Первый запуск (Когда E:/test.txt еще не существует на жестком диске)
 Коснитесь файла утилиты
java - джава - учиться java - учебник java -
Коснитесь файла утилиты
- примеры java - java-программы
  • Второй запуск (Когда E: /test.txt был создан и настроена дата последнего изменения)
 файл-утилиты-нажмите- файл
java - джава - учиться java - учебник java -
файл-утилиты-нажмите- файл
- примеры java - java-программы
  • Использование FileUtils позволяет вам легко копировать и вставлять файлы из определенного места в другое, или копировать файлы из одной папки в другую.

FileUtilsCopyDirectory.java

package com.wikitechy.tutorial.commonsio.fileutils;
 
import java.io.File;
import java.io.IOException;
 
import org.apache.commons.io.FileUtils;
 
public class FileUtilsCopyDirectory {
 
   public static void main(String[] args) {
       File srcDir = new File("C:/test");
       File destDir = new File("D:/test/abc");
       try {
           FileUtils.copyDirectory(srcDir, destDir);
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
 
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

6- FilenameUtils

  • Класс FilenameUtils содержит утилитарные методы для работы с файлами не используя объекты File. Этот класс для соответствия между Unix и Windows, чтобы помочь переходам между этими средами (например, переход от среды разработки к среде завершенного продукта).FilenameUtils javadoc:
  • Иллюстрированный пример, убрать двоеточия на ссылке к файлу:

FilenameUtilsNormalize.java

package com.wikitechy.tutorial.commonsio.filenameutils;
 
import org.apache.commons.io.FilenameUtils;
 
public class FilenameUtilsNormalize {
 
   public static void main(String[] args) {
       String filename = "C:/commons/io/../lang/project.xml";
       String normalized = FilenameUtils.normalize(filename);
       System.out.println(normalized);
   }
 
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Запуск и получение результата:
 Коснитесь файла утилиты нормализовать
java - джава - учиться java - учебник java -
Коснитесь файла утилиты нормализовать
- примеры java - java-программы
  • FilenameUtils имеет более 40 утилитарных методов, вы можете посмотреть детали в Javadoc.

7- FileSystemUtils

  • Класс FileSystemUtils содержит утилитарные методы для работы с файловой системой для доступа к функциям, не поддерживаемыми JDK. В настоящее время, этот класс имеет только методы получения свободного места на диске. Обратите внимание, что он использует команды command line, а не собственный код.

FileSystemUtilsFreeSpaceKb.java

package com.wikitechy.tutorial.commonsio.filesystemutils;
 
import java.io.IOException;
 
import org.apache.commons.io.FileSystemUtils;
 
public class FileSystemUtilsFreeSpaceKb {
   public static void main(String[] args) {
       try {
           Long kb = FileSystemUtils.freeSpaceKb("C:/");
           System.out.println("Free Space: " + kb + "KB");
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

8- Line iterator

  • Класс org.apache.commons.io.LineIterator предоставляет гибкий способ работы с файлом на основе строки. Пример можно создать напрямую или через методы в FileUtils или IOUtils. Рекомендуется использовать:
LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
    while (it.hasNext()) {
        String line = it.nextLine();
        // / do something with line
    }
} finally {
    LineIterator.closeQuietly(it);
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

LineIteratorExample.java

package com.wikitechy.tutorial.commonsio.lineiterator;
 
import java.io.File;
import java.io.IOException;
 
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
 
public class LineIteratorExample {
   public static void main(String[] args) {
       try {
           File file = new File("D:/test.txt");
           LineIterator it = FileUtils.lineIterator(file, "UTF-8");
           try {
               while (it.hasNext()) {
                   String line = it.nextLine();
                   //
                   if (line != null && line.startsWith("##")) {
                       System.out.println(line.substring(2));
                   }
               }
           } finally {
               LineIterator.closeQuietly(it);
           }
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

9- Фильтры файлов (File filters)

  • Пакет org.apache.commons.io.filefilter определяет интерфейс ( IOFileFilter) который сочетает оба интерфейса: java.io.FileFilter и java.io.FilenameFilter. Помимо этого, пакет имеет серию классов выполнений (implements) IOFileFilter готовые для вашего пользования, он так же имеет утилитарный класс ( FileFilterUtils), позволяющий вам сочетать эти фильтры (filters) друг с другом, чтобы создать новый фильтр. Они используются для фильтрования списка файлов по вашему запросу или используются в FileDialog
  • Например, java.io.FileFilter может быть использован чтобы вы отфильтровали файлы (File) по вашему усмотрение в определенной папке. Но лучше, если вы будете использовать классы в пакете org.apache.commons.io.filefilter. Там есть много уже написанныз для вас, и нужно просто использовать.
  • Посмотрите пример когда не используется

FileFilterExample1.java

package com.wikitechy.tutorial.commonsio.filefilter;
 
import java.io.File;
import java.io.FileFilter;
 
public class FileFilterExample1 {
 
   public static void main(String[] args) {
 
       FileFilter filter = new MyFileFilter();
 
       File dir = new File("C:/test");
 
       // Get file with extension js or css.
       File[] list = dir.listFiles(filter);
 
       for (File file : list) {
           System.out.println("File " + file.getAbsolutePath());
       }
   }
 
   // Filter accept files (*.js , *.css)
   static class MyFileFilter implements FileFilter {
 
       public boolean accept(File pathname) {
           String abstractPath = pathname.getAbsolutePath();
            
           if (abstractPath.endsWith(".js") || abstractPath.endsWith(".css")) {
               return true;
           }
           return false;
       }
 
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • И, например, используйте класс SuffixFileFilter, расположенный в пакете org.apache.commons.io.filefilter

HiddenFileFilterExample.java

package com.wikitechy.tutorial.commonsio.filefilter;
 
import java.io.File;
 
import org.apache.commons.io.filefilter.HiddenFileFilter;
 
public class HiddenFileFilterExample {
 
   public static void main(String[] args) {
       File dir = new File("C:/test");
       String[] files = dir.list(HiddenFileFilter.HIDDEN);
       for (int i = 0; i < files.length; i++) {
           System.out.println(files[i]);
       }
   }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

FileFilterExample2.java

package com.wikitechy.tutorial.commonsio.filefilter;
 
import java.io.File;
import java.io.FileFilter;
 
import org.apache.commons.io.filefilter.SuffixFileFilter;
 
public class FileFilterExample2 {
 
    public static void main(String[] args) {
        String[] suffixs = new String[] { ".js", ".css" };
        FileFilter filter = new SuffixFileFilter(suffixs);
 
        File dir = new File("C:/test");
         
        // Get file with extension js or css.
        File[] list = dir.listFiles(filter);
 
        for (File file : list) {
            System.out.println("File " + file.getAbsolutePath());
        }
    }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
  • Пример комбинирования два фильтра вместе:
package com.wikitechy.tutorial.commonsio.filefilter;
 
import java.io.File;
import java.io.FileFilter;
 
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.HiddenFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
 
public class CombineTwoFilterExample {
 
    public static void main(String[] args) {
 
        String[] suffixs = new String[] { ".js", ".css" };
        IOFileFilter filter1 = new SuffixFileFilter(suffixs);
        //
        IOFileFilter filter2 = HiddenFileFilter.VISIBLE;
        //
        // Filter accept file with extension (js,css) and Visible.
        IOFileFilter newFilter = FileFilterUtils
                .andFileFilter(filter1, filter2);
 
        File dir = new File("C:/test");
 
        File[] list = dir.listFiles((FileFilter) newFilter);
 
        for (File file : list) {
            System.out.println("File " + file.getAbsolutePath());
        }
 
    }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

10- File comparators (Компаратор File)

  • Пакет org.apache.commons.io.comparator предоставляет ряд применений java.util.Comparator для java.io.File. Эти компараторы могут использоваться для сортировки списков и массивов файлов

SizeFileComparatorExample.java

package com.wikitechy.tutorial.commonsio.comparator;
 
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
 
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.comparator.SizeFileComparator;
 
public class SizeFileComparatorExample {
 
    public static void main(String[] args) throws IOException {
        // Current directory
        File directory = new File(".");
        File[] files = directory.listFiles();
 
        System.out.println("Default order");
        displayFiles(files);
 
        Arrays.sort(files, SizeFileComparator.SIZE_COMPARATOR);
        System.out
                .println("\nSizeFileComparator.SIZE_COMPARATOR (Ascending, directories treated as 0)");
        displayFiles(files);
 
        Arrays.sort(files, SizeFileComparator.SIZE_REVERSE);
        System.out
                .println("\nSizeFileComparator.SIZE_REVERSE (Descending, directories treated as 0)");
        displayFiles(files);
 
        Arrays.sort(files, SizeFileComparator.SIZE_SUMDIR_COMPARATOR);
        System.out
                .println("\nSizeFileComparator.SIZE_SUMDIR_COMPARATOR (Ascending, directory size used)");
        displayFilesWithDirectorySizes(files);
 
        Arrays.sort(files, SizeFileComparator.SIZE_SUMDIR_REVERSE);
        System.out
                .println("\nSizeFileComparator.SIZE_SUMDIR_REVERSE (Descending, directory size used)");
        displayFilesWithDirectorySizes(files);
    }
 
    public static void displayFiles(File[] files) {
        for (File file : files) {
            System.out.printf("%-20s Size:" + file.length() + "\n",
                    file.getName());
        }
    }
 
    public static void displayFilesWithDirectorySizes(File[] files) {
        for (File file : files) {
            if (file.isDirectory()) {
                System.out.printf(
                        "%-20s Size:" + FileUtils.sizeOfDirectory(file) + "\n",
                        file.getName());
            } else {
                System.out.printf("%-20s Size:" + file.length() + "\n",
                        file.getName());
            }
        }
    }
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Default order
.classpath           Size:1431
.project             Size:569
.settings            Size:4096
pom.xml              Size:547
src                  Size:0
target               Size:0
test.txt             Size:0
 
SizeFileComparator.SIZE_COMPARATOR (Ascending, directories treated as 0)
.settings            Size:4096
src                  Size:0
target               Size:0
test.txt             Size:0
pom.xml              Size:547
.project             Size:569
.classpath           Size:1431
 
SizeFileComparator.SIZE_REVERSE (Descending, directories treated as 0)
.classpath           Size:1431
.project             Size:569
pom.xml              Size:547
.settings            Size:4096
src                  Size:0
target               Size:0
test.txt             Size:0
 
SizeFileComparator.SIZE_SUMDIR_COMPARATOR (Ascending, directory size used)
test.txt             Size:0
.settings            Size:489
pom.xml              Size:547
.project             Size:569
.classpath           Size:1431
src                  Size:11307
target               Size:22433
 
SizeFileComparator.SIZE_SUMDIR_REVERSE (Descending, directory size used)
target               Size:22433
src                  Size:11307
.classpath           Size:1431
.project             Size:569
pom.xml              Size:547
.settings            Size:489
test.txt             Size:0
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда

11- Streams

  • Пакеты org.apache.commons.io.input и org.apache.commons.io.output содержат различные классы обработки потоков данных. К ним относятся:

Related Searches to Руководство Java Commons IO