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.