Apache Commons IO - Hızlı Kılavuz

Apache Commons IO kitaplığı, çok çeşitli kullanım durumlarını kapsayan File IO için ortak işlemler için çeşitli yardımcı sınıflar sağlar. Standart kod yazmaktan kaçınmaya yardımcı olur.

Apache Commons IO kitaplığı aşağıdaki kategoriler için sınıflar sağlar -

Yardımcı sınıflar

Bu sınıflar altında org.apache.commons.iopaket, dosya ve dizge karşılaştırması sağlar. Aşağıda örneklerden bazıları verilmiştir.

  • IOUtils- Dosyaları okumak, yazmak ve kopyalamak için yardımcı yöntemler sağlar. Yöntemler InputStream, OutputStream, Reader ve Writer ile çalışır.

  • FilenameUtils- Dosya Nesnesi kullanmadan dosya adlarıyla çalışma yöntemi sağlar. Farklı işletim sistemlerinde benzer şekilde çalışır.

  • FileUtils - Taşıma, açma, varlığını kontrol etme, dosyanın okunması gibi dosyaları işlemek için yöntem sağlar. Bu yöntemler Dosya Nesnesini kullanır.

  • IOCase - Dize manipülasyonu ve karşılaştırması için yöntem sağlar.

  • FileSystemUtils - Bir disk sürücüsünde boş alan elde etme yöntemi sağlar.

  • LineIterator - Hat tabanlı bir dosyayla çalışmanın esnek bir yolunu sağlar.

Sınıfları filtrele

Org.apache.commons.io.filefilter paketi altındaki filtre sınıfları, dizge tabanlı sıkıcı karşılaştırmalar yerine mantıksal ölçütlere göre dosyaları filtrelemek için yöntemler sağlar. Aşağıda örneklerden bazıları verilmiştir.

  • NameFileFilter - Bir ad için dosya adlarını filtreler.

  • WildcardFileFilter - Verilen joker karakterleri kullanarak dosyaları filtreler.

  • SuffixFileFilter- Dosyaları son eke göre filtreler. Bu, belirli bir türdeki tüm dosyaların alınmasında kullanılır.

  • PrefixFileFilter - Dosyaları öneke göre filtreler.

  • OrFileFilter- Bir dosya filtreleri listesinde koşullu VEYA mantığı sağlar. Listedeki herhangi bir filtre doğru döndürürse doğru döndürür. Aksi takdirde, yanlış döndürür.

  • AndFileFilter- Bir dosya filtreleri listesi boyunca koşullu ve mantık sağlar. Listedeki herhangi bir filtre yanlış döndürürse yanlış döndürür. Aksi takdirde, true döndürür.

Dosya İzleme sınıfları

Altında olan dosya izleme sınıfları org.apache.commons.io.monitorpaketi, belirli bir dosya veya klasördeki değişiklikleri izlemek için kontrol sağlar ve değişikliklere göre işlem yapılmasına izin verir. Aşağıda örneklerden bazıları verilmiştir.

  • FileEntry- Bir dosyanın veya dizinin durumunu belirtir. Bir anda dosya öznitelikleri.

  • FileAlterationObserver - Bir kök dizinin altındaki dosyaların durumunu temsil eder, dosya sistemini kontrol eder ve dinleyicileri oluşturma, değiştirme veya silme olayları konusunda bilgilendirir.

  • FileAlterationMonitor - Herhangi bir kayıtlı FileAlterationObserver'ı belirli bir aralıkta tetikleyen bir izleme iş parçacığını oluşturan bir iş parçacığını temsil eder.

Karşılaştırıcı sınıfları

Altındaki dosya izleme sınıfları org.apache.commons.io.comparator paketi, dosyaları ve dizinleri kolayca karşılaştırmanıza ve sıralamanıza izin verir.

  • NameFileComparator - İki dosyanın adını karşılaştırın.

  • SizeFileComparator - İki dosyanın boyutunu karşılaştırın.

  • LastModifiedFileComparator - İki dosyanın son değiştirilme tarihlerini karşılaştırın.

Akış sınıfları

Akışlarda yararlı görevler yapmak için, org.apache.commons.io.input paketi altında InputStream ve org.apache.commons.io.output paketi altında OutputStream uygulamasının birden fazla uygulaması vardır. Aşağıda örneklerden bazıları verilmiştir.

  • NullOutputStream - Herhangi bir hatayla gönderilen tüm verileri emer.

  • TeeOutputStream - Çıkışı iki akışa gönderir.

  • ByteArrayOutputStream - JDK sınıfının daha hızlı versiyonu.

  • CountingOutputStream - Akıştan geçen bayt sayısını sayar.

  • ProxyOutputStream - Çağrıları proxy akışına değiştirir.

  • LockableFileWriter - Kilit dosyaları oluşturmak ve basit çapraz iş parçacıklı dosya kilidi işlemeye izin vermek için bir FileWriter.

Bu bölümde, Apache Commons IO'nun yerel ortam kurulumunu ve Windows 2000 / XP, Windows 95/98 / ME vb. İçin Commons IO yolunun nasıl kurulacağını öğreneceğiz. Ayrıca bazı popüler java editörlerini ve Commons IO arşivi nasıl indirilir.

Yerel Ortam Kurulumu

Hala ortamınızı Java programlama dili için kurmaya istekliyseniz, bu bölüm Java'yı makinenize nasıl indirip kuracağınız konusunda size yol gösterecektir. Ortamı kurmak için lütfen aşağıda belirtilen adımları izleyin.

Java SE, bağlantıdan ücretsiz olarak indirilebilir https://www.oracle.comBöylece işletim sisteminize göre bir sürüm indirirsiniz.

Java'yı indirmek için talimatları izleyin ve .exeMakinenize Java yüklemek için. Java'yı makinenize yükledikten sonra, ortam değişkenlerini doğru yükleme dizinlerini gösterecek şekilde ayarlamanız gerekir.

Windows 2000 / XP için Yol

Windows 2000 / XP için yolun nasıl ayarlanacağını anlayalım. Java'yı şuraya yüklediğinizi varsayıyoruz:c:\Program Files\java\jdk dizin.

  • "Bilgisayarım" ı sağ tıklayın ve "Özellikler" i seçin.

  • "Gelişmiş" sekmesinin altındaki "Ortam değişkenleri" düğmesini tıklayın.

  • Şimdi, 'Yol' değişkenini değiştirin, böylece Java çalıştırılabilir dosyasının yolunu da içerir. Örneğin, yol şu anda 'C: \ WINDOWS \ SYSTEM32' olarak ayarlanmışsa, okumak için yolunuzu değiştirin'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.

Windows 95/98 / ME için Yol

Windows 95/98 / ME için yolun nasıl ayarlanacağını anlayalım. Java'yı şuraya yüklediğinizi varsayıyoruz:c:\Program Files\java\jdk dizin.

  • 'C: \ autoexec.bat' dosyasını düzenleyin ve sonuna şu satırı ekleyin - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'

Linux, UNIX, Solaris, FreeBSD için yol

PATH ortam değişkeni, Java ikili dosyalarının kurulduğu yeri gösterecek şekilde ayarlanmalıdır. Bunu yapmakta sorun yaşıyorsanız, kabuk belgelerinize bakın.

Örneğin, kabuğunuz olarak bash kullanırsanız, aşağıdaki satırı '.bashrc: export PATH = / path / to / java: $ PATH'in sonuna eklersiniz.

Popüler Java Editörleri

Java programlarınızı yazmak için bir metin düzenleyiciye ihtiyacınız var. Piyasada birçok sofistike IDE bulunmaktadır. Ancak şimdilik aşağıdakilerden birini düşünebilirsiniz -

  • Notepad - Windows makinede, Not Defteri (Bu eğitim için önerilir), TextPad gibi herhangi bir basit metin düzenleyiciyi kullanabilirsiniz.

  • Netbeans - Açık kaynak kodlu ve ücretsiz olan ve buradan indirilebilen bir Java IDE'dir. https://www.netbeans.org/index.html.

  • Eclipse - Eclipse açık kaynak topluluğu tarafından geliştirilmiş bir Java IDE'dir ve şu adresten indirilebilir: https://www.eclipse.org/.

Ortak IO Arşivini İndirin

Apache Common IO jar dosyasının en son sürümünü, download_io.cgi adresinde bulunan commons-io-2.6- bin.zip adresinden indirin Bu eğitimi yazarken, commons-io-2.6-bin.zip dosyasını indirdik ve kopyaladık C: \> Apache klasörüne.

işletim sistemi Arşiv adı
pencereler commons-io-2.6-bin.zip
Linux commons-io-2.6-bin.tar.gz
Mac commons-io-2.6-bin.tar.gz

Apache Ortak GÇ Ortamı

Yı kur APACHE_HOMEortam değişkeni, Apache jar'ın makinenizde depolandığı temel dizin konumuna işaret eder. Varsayalım ki, commons-io-2.6-bin.zip'i çeşitli İşletim Sistemlerinde Apache klasörüne aşağıdaki gibi çıkardık.

işletim sistemi Çıktı
pencereler APACHE_HOME ortam değişkenini C: \ Apache olarak ayarlayın
Linux APACHE_HOME = / usr / local / Apache'yi dışa aktar
Mac dışa aktar APACHE_HOME = / Kitaplık / Apache

CLASSPATH Değişkenini Ayarla

Yı kur CLASSPATHCommon IO jar konumuna işaret edecek ortam değişkeni. Commons-io-2.6-bin.zip dosyasını çeşitli İşletim Sistemlerinde Apache klasöründe aşağıdaki gibi sakladığınızı varsayarsak.

işletim sistemi Çıktı
pencereler CLASSPATH ortam değişkenini% CLASSPATH%;% APACHE_HOME% \ commons-io-2.6.jar;.;
Linux dışa aktar CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar :.
Mac dışa aktar CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar :.

IOUtils dosyaları okumak, yazmak ve kopyalamak için yardımcı yöntemler sağlar. Yöntemler InputStream, OutputStream, Reader ve Writer ile çalışır.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.IOUtils Sınıf -

public class IOUtils
   extends Object

IOUtils'in Özellikleri

IOUtils'in özellikleri aşağıda verilmiştir -

  • Giriş / çıkış işlemleri için statik fayda yöntemleri sağlar.

  • toXXX () - bir akıştan veri okur.

  • write () - bir akışa veri yazın.

  • copy () - tüm verileri bir akışa başka bir akışa kopyalar.

  • contentEquals - iki akışın içeriğini karşılaştırın.

IOUtils Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.commons.io.IOUtils;
public class IOTester {
   public static void main(String[] args) {
      try {
         //Using BufferedReader
         readUsingTraditionalWay();
         //Using IOUtils
         readUsingIOUtils();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   //reading a file using buffered reader line by line
   public static void readUsingTraditionalWay() throws IOException {
      try(BufferedReader bufferReader = new BufferedReader( new InputStreamReader(
      new FileInputStream("input.txt") ) )) {
         String line;
         while( ( line = bufferReader.readLine() ) != null ) {
            System.out.println( line );
         }
      }
   }
   //reading a file using IOUtils in one go
   public static void readUsingIOUtils() throws  IOException {
      try(InputStream in = new FileInputStream("input.txt")) {
         System.out.println( IOUtils.toString( in , "UTF-8") );
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır -

Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.

FileUtils dosyaları taşıma, açma, varlığını kontrol etme, dosyanın okunması vb. Gibi işlemek için bir yöntem sağlar. Bu yöntemler Dosya Nesnesini kullanır.

Sınıf Beyanı

Org.apache.commons.io.FileUtils Sınıfı beyanı aşağıdadır -

public class FileUtils
   extends Object

FileUtils'in Özellikleri

FileUtils'in özellikleri aşağıda belirtilmiştir -

  • Bir dosyaya yazma yöntemleri.

  • Bir dosyadan okuma yöntemleri.

  • Ana dizinleri içeren bir dizin oluşturma yöntemleri.

  • Dosyaları ve dizinleri kopyalama yöntemleri.

  • Dosyaları ve dizinleri silme yöntemleri.

  • Bir URL'ye ve URL'den dönüştürme yöntemleri.

  • Dosyaları ve dizinleri filtre ve uzantıya göre listeleme yöntemleri.

  • Dosya içeriğini karşılaştırma yöntemleri.

  • Son değiştirilme tarihini dosyalama yöntemleri.

  • Sağlama toplamı hesaplama yöntemleri.

FileUtils Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import org.apache.commons.io.FileUtils;
public class IOTester {
   public static void main(String[] args) {
      try {
         //Using FileUtils
         usingFileUtils();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFileUtils() throws IOException {
      //get the file object
      File file = FileUtils.getFile("input.txt");
      //get the temp directory
      File tmpDir = FileUtils.getTempDirectory();
      System.out.println(tmpDir.getName());
      //copy file to temp directory
      FileUtils.copyFileToDirectory(file, tmpDir);
      //create a new file
      File newTempFile = FileUtils.getFile(tmpDir, file.getName());
      //get the content
      String data = FileUtils.readFileToString(newTempFile, Charset.defaultCharset());
      //print the content
      System.out.println(data);
   }
}

Çıktı

Çıktı aşağıda belirtilmiştir -

Temp
Welcome to TutorialsPoint. Simply Easy Learning.

FilenameUtils, Dosya Nesnesi kullanmadan dosya adlarıyla çalışma yöntemi sağlar. Farklı işletim sistemlerinde benzer şekilde çalışır. Bu sınıf, Windows tabanlı bir geliştirme makinesinden Unix tabanlı bir üretim makinesine geçerken sorunları çözer.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.FilenameUtils Sınıf -

public class FilenameUtils
   extends Object

FileNameUtils'in Özellikleri

Bu sınıf, bir dosya adı içinde altı bileşen tanımlar. Örnek bir konumu düşününC:\dev\project\file.txt. Daha sonra bileşenler aşağıdaki gibidir:

  • Önek - C: \

  • Göreli Yol - dev \ proje \

  • Mutlak yol - C: \ dev \ proje \

  • İsim - file.txt

  • Temel ad - dosya

  • Uzantı - txt

Bir dizini tanımlamak için dosya adına bir ayırıcı ekleyin.

FilenameUtils Sınıfı Örneği

FilenameUtils Sınıfı örneği aşağıda verilmiştir -

IOTester.java

import java.io.IOException;
import org.apache.commons.io.FilenameUtils;
public class IOTester {
   public static void main(String[] args) {
      try {
         //Using FilenameUtils
         usingFilenameUtils();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFilenameUtils() throws IOException {
      String path = "C:\\dev\\project\\file.txt";
      System.out.println("Full Path: " +FilenameUtils.getFullPath(path));
      System.out.println("Relative Path: " +FilenameUtils.getPath(path));
      System.out.println("Prefix: " +FilenameUtils.getPrefix(path));
      System.out.println("Extension: " + FilenameUtils.getExtension(path));
      System.out.println("Base: " + FilenameUtils.getBaseName(path));
      System.out.println("Name: " + FilenameUtils.getName(path));
      String filename = "C:/commons/io/../lang/project.xml";
      System.out.println("Normalized Path: " + FilenameUtils.normalize(filename));
   }
}

Çıktı

Çıktı aşağıda verilmiştir -

Full Path: C:\dev\project\
Relative Path: dev\project\
Prefix: C:\
Extension: txt
Base: file
Name: file.txt
Normalized Path: C:\commons\lang\project.xml

FileSystemUtils, bir disk sürücüsünde boş alan elde etmek için yöntem sağlar.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.FileSystemUtils Sınıf -

public class FileSystemUtils
   extends Object

FileSystemUtils Sınıfı Örneği

Aşağıda verilen FileSystemUtils Sınıfı örneği -

IOTester.java

import java.io.IOException;
import org.apache.commons.io.FileSystemUtils;
public class IOTester {
   public static void main(String[] args) {
      try {
         System.out.println("Free Space " + FileSystemUtils.freeSpaceKb("C:/") + " Bytes");
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
}

Çıktı

Aşağıda verilen çıktıdır -

Free Space 61355640 kb

IO büyük / küçük harf duyarlılığının numaralandırılması. Farklı İşletim sistemlerinin dosya adları için büyük / küçük harfe duyarlılık için farklı kuralları vardır. Örneğin, Unix büyük / küçük harfe duyarlıyken, Windows dosya adlandırma için büyük / küçük harfe duyarlı değildir. IOCase bu farkı yakalar ve dosya adı karşılaştırmalarının nasıl yapılması gerektiğini kontrol etmek için bir numaralandırma sağlar. Ayrıca karşılaştırmaları gerçekleştirmek için numaralandırmayı kullanma yöntemleri de sağlar.

Beyanı Büyüt

Org.apache.commons.io.IOCase Enum beyanı aşağıdadır -

public enum IOCase
   extends Enum<IOCase> implements Serializable

IOCase Enum Örneği

Bir IOCase Enum örneği aşağıda verilmiştir -

IOTester.java

import java.io.IOException;
import org.apache.commons.io.IOCase;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingIOCase();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingIOCase() throws IOException {
      String text = "Welcome to TutorialsPoint. Simply Easy Learning.";
      String text1 = "WELCOME TO TUTORIALSPOINT. SIMPLY EASY LEARNING.";
      System.out.println("Ends with Learning (case sensitive): " + IOCase.SENSITIVE.checkEndsWith(text1, "Learning."));
      System.out.println("Ends with Learning (case insensitive): " + IOCase.INSENSITIVE.checkEndsWith(text1, "Learning."));
      System.out.println("Equality Check (case sensitive): " + IOCase.SENSITIVE.checkEquals(text, text1));
      System.out.println("Equality Check (case insensitive): " + IOCase.INSENSITIVE.checkEquals(text, text1));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır -

Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true

LineIterator, hat tabanlı bir dosyayla çalışmanın esnek bir yolunu sağlar. Bu bölümde aynısını öğrenelim.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.LineIterator Sınıf -

public class LineIterator
   extends Object implements Iterator<String>, Closeable

LineIterator Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingLineIterator();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingLineIterator() throws IOException {
      //get the file object
      File file = FileUtils.getFile("input.txt");
      try(LineIterator lineIterator = FileUtils.lineIterator(file)) {
         System.out.println("Contents of input.txt");
         while(lineIterator.hasNext()) {
            System.out.println(lineIterator.next());
         }
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır -

Contents of input.txt
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.

Commons IO'da NameFileFilter, bir ad için dosya adlarını filtreler.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.filefilter.NameFileFilter Sınıf :

public class NameFileFilter
   extends AbstractFileFilter implements Serializable

NameFileFilter Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

Geçerli dizindeki tüm dosya ve dizinleri yazdıralım ve ardından adı Input.txt olan bir dosyayı filtreleyelim.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.filefilter.NameFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingNameFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingNameFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile with name input.txt\n");
      String[] acceptedNames = {"input", "input.txt"};
      String[] filesNames = currentDirectory.list( new NameFileFilter(acceptedNames, IOCase.INSENSITIVE) );
      for( int i = 0; i < filesNames.length; i++ ) {
         System.out.println(filesNames[i]);
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır -

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with name input.txt

input.txt

Commons IO'da WildcardFileFilter, sağlanan joker karakterleri kullanarak dosyaları filtreler.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.filefilter.WildcardFileFilter Sınıf -

public class WildcardFileFilter
   extends AbstractFileFilter implements Serializable

WildcardFileFilter Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası

Welcome to TutorialsPoint. Simply Easy Learning.

Geçerli dizindeki tüm dosya ve dizinleri yazdıralım ve ardından adı ile biten bir dosyayı filtreleyelim. t.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingWildcardFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingWildcardFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
        System.out.println(files[i]);
      }
      System.out.println("\nFile name ending with t.\n");
      String[] filesNames = currentDirectory.list( new  WildcardFileFilter("*t"));
      for( int i = 0; i < filesNames.length; i++ ) {
        System.out.println(filesNames[i]);
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File name ending with t

.project
input.txt

SuffixFileFilter, soneki temel alan dosyaları filtreler. Bu, belirli bir türdeki tüm dosyaların alınmasında kullanılır.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.filefilter.SuffixFileFilter Sınıf -

public class SuffixFileFilter
   extends AbstractFileFilter implements Serializable

SuffixFileFilter Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

Geçerli dizindeki tüm dosya ve dizinleri yazdıralım ve ardından txt uzantılı bir dosyayı filtreleyelim.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.SuffixFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingSuffixFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingSuffixFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile with extenstion txt\n");
      String[] filesNames = currentDirectory.list( new SuffixFileFilter("txt"));
      for( int i = 0; i < filesNames.length; i++ ) {
         System.out.println(filesNames[i]);
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with extenstion txt

input.txt

PrefixFileFilter, öneke dayalı dosyaları filtreler.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.filefilter.PrefixFileFilter Sınıf -

public class PrefixFileFilter
   extends AbstractFileFilter implements Serializable

PrefixFileFilter Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

Geçerli dizindeki tüm dosyaları ve dizinleri yazdıralım ve ardından, input ile başlayan adla bir dosyayı filtreleyelim.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.PrefixFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingPrefixFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingPrefixFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile starting with input\n");
      String[] filesNames = currentDirectory.list( new PrefixFileFilter("input") );
      for( int i = 0; i < filesNames.length; i++ ) {
         System.out.println(filesNames[i]);
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır -

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with extenstion txt

input.txt

OrFileFilter, bir dosya filtreleri listesi boyunca koşullu VEYA mantığı sağlar. Listedeki filtrelerden herhangi biri true değerini döndürürse true döndürür. Aksi takdirde, yanlış döndürür.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.filefilter.OrFileFilter Sınıf -

public class OrFileFilter
   extends AbstractFileFilter implements ConditionalFileFilter, Serializable

OrFileFilter Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

Geçerli dizindeki tüm dosyaları ve dizinleri yazdıralım ve ardından ile başlayan adla bir dosyayı filtreleyelim. veya t ile biter.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.OrFileFilter;
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingOrFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingOrFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile starting with . or ends with t\n");
      String[] filesNames = currentDirectory.list( new OrFileFilter(new PrefixFileFilter("."), new WildcardFileFilter("*t")));
      for( int i = 0; i < filesNames.length; i++ ) {
         System.out.println(filesNames[i]);
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File starting with . or ends with t

.classpath
.project
.settings
input.txt

AndFileFilter, bir dosya filtreleri listesi boyunca koşullu ve mantık sağlar. Listedeki tüm filtreler true döndürürse true döndürür. Aksi takdirde, yanlış döndürür.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.filefilter.AndFileFilter Sınıf -

public class AndFileFilter
   extends AbstractFileFilter implements ConditionalFileFilter, Serializable

AndFileFilter Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

Geçerli dizindeki tüm dosyaları ve dizinleri yazdıralım ve ardından ile başlayan adla bir dosyayı filtreleyelim. ve t ile biter.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingAndFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingAndFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile starting with . and ends with t\n");
      String[] filesNames = currentDirectory.list(new AndFileFilter(
         new PrefixFileFilter("."), new WildcardFileFilter("*t")));
      for( int i = 0; i < filesNames.length; i++ ) {
        System.out.println(filesNames[i]);
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File starting with . or ends with t

.project

FileEntry, bir dosyanın veya dizinin durumunu sağlar. Bir anda dosya öznitelikleri.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.monitor.FileEntry Sınıf -

public class FileEntry
   extends Object implements Serializable

Dosya Girişinin Özellikleri

FileEntry sınıfı nesnesi, bir noktada aşağıdaki dosya özniteliklerini sağlar.

  • getName () - dosya adı.

  • var () - dosyanın var olup olmadığını kontrol eder.

  • isDirectory () - dosyanın bir dizin olup olmadığını kontrol eder.

  • lastModified () - son değiştirilme tarihini verir.

  • listFiles () - dizinin içeriğini verir.

FileEntry Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileEntry;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingFileEntry();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFileEntry() throws IOException {
      //get the file object
      File file = FileUtils.getFile("input.txt");
      FileEntry fileEntry = new FileEntry(file);
      System.out.println("Monitored File: " + fileEntry.getFile());
      System.out.println("File name: " + fileEntry.getName());
      System.out.println("Is Directory: " + 	fileEntry.isDirectory());
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Monitored File: input.txt
File name: input.txt
Is Directory: false

FileAlterationObserver, bir kök dizinin altındaki dosyaların durumunu temsil eder, dosya sistemini kontrol eder ve dinleyicilere oluşturma, değiştirme veya silme olaylarını bildirir.

Sınıf Beyanı

Aşağıdaki beyanı

org.apache.commons.io.monitor.FileAlterationObserver Sınıf -

public class FileAlterationObserver
   extends Object implements Serializable

FileAlterationObserver Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileDeleteStrategy;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingFileAlterationObserver();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFileAlterationObserver() throws IOException {
      //get the file object
      File inputFile = FileUtils.getFile("input.txt");
      String absolutePath = inputFile.getAbsolutePath();
      String parent = absolutePath.substring(0,absolutePath.indexOf("input.txt"));
      File parentDirectory = FileUtils.getFile(parent);
      FileAlterationObserver observer = new
      FileAlterationObserver(parentDirectory);
      observer.addListener(new FileAlterationListenerAdaptor() {
         @Override
         public void onDirectoryCreate(File file) {
            System.out.println("Folder created: " + file.getName());
         }
         @Override
            public void onDirectoryDelete(File file) {
               System.out.println("Folder deleted: " + file.getName());
            }
         @Override
            public void onFileCreate(File file) {
               System.out.println("File created: " + file.getName());
            }
         @Override
            public void onFileDelete(File file) {
               Syst em.out.println("File deleted: " + file.getName());
            }
        });
       //create a monitor to check changes after every 500 ms
       FileAlterationMonitor monitor = new FileAlterationMonitor(500, observer);
       try {
          monitor.start();
         //create a new directory
         File newFolder = new File("test");
         File newFile = new File("test1");
         newFolder.mkdirs();
         Thread.sleep(1000);
         newFile.createNewFile();
         Thread.sleep(1000);
         FileDeleteStrategy.NORMAL.delete(newFolder);
         Thread.sleep(1000);
         FileDeleteStrategy.NORMAL.delete(newFile);
         Thread.sleep(1000);
         monitor.stop(10000);
      } catch(IOException e) {
         System.out.println(e.getMessage());
      } catch(InterruptedException e) {
         System.out.println(e.getMessage());
      } catch (Exception e) {
         System.out.println(e.getMessage());
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Folder created: test
File created: test1
Folder deleted: test
File deleted: test1

FileAlterationMonitor, herhangi bir kayıtlı FileAlterationObserver'ı belirli bir aralıkta tetikleyen bir izleme iş parçacığı oluşturan bir iş parçacığını temsil eder.

Sınıf Beyanı

Org.apache.commons.io.monitor.FileAlterationMonitor Sınıfı beyanı aşağıdadır -

public final class FileAlterationMonitor
   extends Object implements Runnable

FileAlterationMonitor Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileDeleteStrategy;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingFileAlterationMonitor();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFileAlterationMonitor() throws IOException {
      //get the file object
      File inputFile = FileUtils.getFile("input.txt");
      String absolutePath = inputFile.getAbsolutePath();
      String parent = absolutePath.substring(0,absolutePath.indexOf("input.txt"));
      File parentDirectory = FileUtils.getFile(parent);
      FileAlterationObserver observer = new
      FileAlterationObserver(parentDirectory);
      observer.addListener(new FileAlterationListenerAdaptor(){
         @Override
         public void onDirectoryCreate(File file) {
            System.out.println("Folder created: " + file.getName());
         }
         @Override
         public void onDirectoryDelete(File file) {
            System.out.println("Folder deleted: " + file.getName());
         }
         @Override
         public void onFileCreate(File file) {
            System.out.println("File created: " + file.getName());
         }
         @Override
         public void onFileDelete(File file) {
            System.out.println("File deleted: " + file.getName());
         }
      });
      //create a monitor to check changes after every 500 ms
      FileAlterationMonitor monitor = new FileAlterationMonitor(500, observer);
      try {
         monitor.start();
         //create a new directory
         File newFolder = new File("test");
         File newFile = new File("test1");
         newFolder.mkdirs();
         Thread.sleep(1000);
         newFile.createNewFile();
         Thread.sleep(1000);
         FileDeleteStrategy.NORMAL.delete(newFolder);
         Thread.sleep(1000);
         FileDeleteStrategy.NORMAL.delete(newFile);
         Thread.sleep(1000);
         monitor.stop(10000);
      } catch(IOException e) {
         System.out.println(e.getMessage());
      } catch(InterruptedException e) {
         System.out.println(e.getMessage());
      } catch (Exception e) {
         System.out.println(e.getMessage());
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Folder created: test
File created: test1
Folder deleted: test
File deleted: test1

NameFileComparator iki dosyanın adlarını karşılaştırır. Listeleri veya dosya dizilerini, büyük / küçük harfe duyarlı, büyük / küçük harfe duyarlı olmayan veya sisteme bağlı büyük / küçük harfe duyarlı bir şekilde adlarını kullanarak sıralamak için kullanılabilir.

Sınıf Beyanı

Aşağıdaki beyanı

org.apache.commons.io.comparator.NameFileComparator Sınıf -

public class NameFileComparator
   extends Object implements Serializable

NameFileComparator Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.comparator.NameFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingNameFileComparator();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingNameFileComparator() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      NameFileComparator comparator = new
      NameFileComparator(IOCase.INSENSITIVE);
      File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
      System.out.println("Sorted By Name: ");
      for(File file:sortedFiles) {
         System.out.println(file.getName());
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Sorted By Name:
.classpath
.project
input.txt

SizeFileComparator iki dosya / dizinin boyutlarını karşılaştırır. Dosya listelerini veya dizilerini boyutlarını veya dizinlerini kullanarak, alt öğe sayısına göre sıralamak için kullanılabilir.

Sınıf Beyanı

Aşağıdaki beyanı

org.apache.commons.io.comparator.SizeFileComparator Sınıf -

public class SizeFileComparator
   extends Object implements Serializable

SizeFileComparator Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import org.apache.commons.io.comparator.SizeFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingSizeFileComparator();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   } 
   public static void usingSizeFileComparator() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      SizeFileComparator comparator = new SizeFileComparator();
      File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
      System.out.println("Sorted By Size: ");
      for(File file:sortedFiles) {
         System.out.println(file.getName() + ", size(kb) :" + file.length());
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441

LastModifiedFileComparator, iki dosya / dizinin son değiştirilme tarihlerini karşılaştırır. Son değiştirilme tarihlerini kullanarak dosya / dizinlerin listelerini veya dizilerini sıralamak için kullanılabilir.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.comparator.LastModifiedFileComparator Sınıf -

public class LastModifiedFileComparator
   extends Object implements Serializable

LastModifiedFileComparator Sınıfı Örneği

İşte ayrıştırmamız gereken girdi dosyası -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.io.comparator.LastModifiedFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingLastModifiedFileComparator();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingLastModifiedFileComparator() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      LastModifiedFileComparator comparator = new LastModifiedFileComparator();
      File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
      System.out.println("Sorted By Last Modified date: ");
      for(File file:sortedFiles) {
         System.out.println(file.getName() + ", Modified on: " + new Date(file.lastModified()));
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Sorted By Last Modified date:
.project, Modified on: Thu Oct 12 19:06:45 IST 2017
.classpath, Modified on: Mon Nov 20 13:09:55 IST 2017
input.txt, Modified on: Mon Nov 20 19:27:55 IST 2017

Proxy akışından okunan tüm baytların bir kopyasını belirli bir OutputStream'e şeffaf bir şekilde yazan bir InputStream proxy'sidir. Proxy giriş akışı, bu proxy üzerindeki close () yöntemi çağrıldığında kapatılır. Aynı anda iki akışı toplu olarak çalıştırmak için kullanılabilir.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.input.TeeInputStream Sınıf -

public class TeeInputStream
   extends ProxyInputStream

TeeInputStream Sınıfı Örneği

Bu örnekte, bir TeeInputStream'in kapatılması, TeeInputStream'in yanı sıra TeeOutputStream nesnelerini de kapatır.

IOTester.java

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.commons.io.input.TeeInputStream;
import org.apache.commons.io.output.TeeOutputStream;
public class IOTester {
   private static final String SAMPLE = "Welcome to TutorialsPoint. Simply Easy
   Learning.";
   public static void main(String[] args) {
      try {
         usingTeeInputStream();
      }catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingTeeInputStream() throws IOException {
      TeeInputStream teeInputStream = null;
      TeeOutputStream teeOutputStream = null;
      try {
         ByteArrayInputStream inputStream = new
         ByteArrayInputStream(SAMPLE.getBytes("US-ASCII"));
         ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
         ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
         teeOutputStream = new TeeOutputStream(outputStream1, outputStream2);
         teeInputStream = new TeeInputStream(inputStream, teeOutputStream, true);
         teeInputStream.read(new byte[SAMPLE.length()]);
         System.out.println("Output stream 1: " + outputStream1.toString());
         System.out.println("Output stream 2: " + outputStream2.toString());
      }catch (IOException e) {
         System.out.println(e.getMessage());
      } finally {
         //teeIn.close() closes teeIn and teeOut which in turn closes the out1 and out2.
         try {
            teeInputStream.close();
         } catch (IOException e) {
            System.out.println(e.getMessage());
         }
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.

TeeOutputStream, OutputStream'i böler. Unix 'tee' komutundan sonra adlandırılır. Bir akışın iki akıma dallanmasına izin verir.

Sınıf Beyanı

Aşağıdaki beyanı org.apache.commons.io.output.TeeOutputStream Sınıf -

public class TeeOutputStream
   extends ProxyOutputStream

TeeOutputStream Sınıfı Örneği

Bu örnekte, TeeOutputStream, parametre olarak iki çıkış akışını kabul eder ve verileri TeeOutputStream set verilerini her iki çıkış akışına iletir.

IOTester.java

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.commons.io.input.TeeInputStream;
import org.apache.commons.io.output.TeeOutputStream;
public class IOTester {
   private static final String SAMPLE = "Welcome to TutorialsPoint. Simply Easy
   Learning.";
   public static void main(String[] args) {
      try {
         usingTeeInputStream();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingTeeInputStream() throws IOException {
      TeeInputStream teeInputStream = null;
      TeeOutputStream teeOutputStream = null;
      try {
         ByteArrayInputStream inputStream = new
         ByteArrayInputStream(SAMPLE.getBytes("US-ASCII"));
         ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
         ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
         teeOutputStream = new TeeOutputStream(outputStream1, outputStream2);
         teeInputStream = new TeeInputStream(inputStream, teeOutputStream, true);
         teeInputStream.read(new byte[SAMPLE.length()]);
         System.out.println("Output stream 1: " + outputStream1.toString());
         System.out.println("Output stream 2: " + outputStream2.toString());
      } catch (IOException e) {
         System.out.println(e.getMessage());
      } finally {
         //teeIn.close() closes teeIn and teeOut which in turn closes the out1 and out2.
         try {
            teeInputStream.close();
         } catch (IOException e) {
            System.out.println(e.getMessage());
         }
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.