Commons-io-quick-guide
Apache Commons IO-概要
Apache Commons IOライブラリは、幅広いユースケースをカバーするFile IOの一般的な操作のためのさまざまなユーティリティクラスを提供します。 定型コードの記述を避けるのに役立ちます。 Apache Commons IOライブラリは、次のカテゴリのクラスを提供します-
- ユーティリティクラス-_org.apache.commons.io_パッケージの下のこれらのクラスは、ファイルと文字列の比較を提供します。 以下に例を示します。
- IOUtils -ファイルの読み取り、書き込み、コピーのためのユーティリティメソッドを提供します。 このメソッドは、InputStream、OutputStream、Reader、Writerで機能します。
- FilenameUtils -ファイルオブジェクトを使用せずにファイル名を操作する方法を提供します。 同様の方法で異なるオペレーティングシステムで動作します。
- FileUtils -移動、開く、存在の確認、ファイルの読み取りなどのファイルを操作する方法を提供します。 これらのメソッドはファイルオブジェクトを使用します。
- IOCase -文字列の操作と比較のためのメソッドを提供します。
- FileSystemUtils -ディスクドライブの空き領域を取得する方法を提供します。
- LineIterator -行ベースのファイルを柔軟に操作する方法を提供します。
- フィルタクラス-_org.apache.commons.io.filefilter_パッケージの下のフィルタクラスは、文字列ベースの面倒な比較の代わりに論理基準に基づいてファイルをフィルタリングするメソッドを提供します。 以下に例を示します。
- NameFileFilter -名前のファイル名をフィルタリングします。
- WildcardFileFilter -指定されたワイルドカードを使用してファイルをフィルタリングします。
- SuffixFileFilter -サフィックスに基づいてファイルをフィルタリングします。 これは、特定のタイプのすべてのファイルを取得する際に使用されます。
- PrefixFileFilter -プレフィックスに基づいてファイルをフィルタリングします。
- OrFileFilter -ファイルフィルターのリスト全体に条件付きORロジックを提供します。 リスト内のいずれかのフィルターがtrueを返す場合、trueを返します。 そうでなければ、falseを返します。
- AndFileFilter -ファイルフィルターのリスト全体に条件付きAndロジックを提供します。 リスト内のフィルターがfalseを返す場合、falseを返します。 それ以外の場合は、trueを返します。
- ファイルモニタークラス-_org.apache.commons.io.monitor_パッケージの下のファイルモニタークラスは、特定のファイルまたはフォルダーの変更を追跡する制御を提供し、変更に応じてアクションを実行できるようにします。 以下に例を示します。
- FileEntry -ファイルまたはディレクトリの状態、ある時点でのファイル属性を提供します。
- FileAlterationObserver -ルートディレクトリの下のファイルの状態を表し、ファイルシステムをチェックし、リスナーに作成、変更、または削除イベントを通知します。
- FileAlterationMonitor -登録されたFileAlterationObserverを指定された間隔でトリガーする監視スレッドを生成するスレッドを表します。
- コンパレータクラス-_org.apache.commons.io.comparator_パッケージの下のファイルモニタクラスにより、ファイルとディレクトリを簡単に比較およびソートできます。
- NameFileComparator -2つのファイルの名前を比較します。
- SizeFileComparator -2つのファイルのサイズを比較します。
- LastModifiedFileComparator -2つのファイルの最終変更日を比較します。
- ストリームクラス-_org.apache.commons.io.input_パッケージの下にInputStreamの複数の実装があり、_org.apache.commons.io.output_パッケージの下にOutputStreamの複数の実装があり、ストリームで有用なタスクを実行します。 以下に例を示します。
- NullOutputStream -エラーで送信されたすべてのデータを吸収します。
- TeeOutputStream -2つのストリームに出力を送信します。
- ByteArrayOutputStream -JDKクラスの高速バージョン。
- CountingOutputStream -ストリームを通過したバイト数をカウントします。
- CountingOutputStream -ストリームを通過したバイト数をカウントします。
- ProxyOutputStream -プロキシストリームへの呼び出しを変更します。
- LockableFileWriter -ロックファイルを作成し、単純なクロススレッドファイルロック処理を可能にするFileWriter。
Apache Commons IO-環境のセットアップ
ローカル環境のセットアップ
Javaプログラミング言語用に環境をセットアップする場合は、このセクションで、マシンにJavaをダウンロードしてセットアップする方法を説明します。 環境をセットアップするには、以下の手順に従ってください。
Java SEは、https://java.sun.com/javase/downloads/index_jdk5.jsp [Javaのダウンロード]リンクから無料で入手できます。 そのため、オペレーティングシステムに基づいてバージョンをダウンロードします。
指示に従ってJavaをダウンロードし、*。exe *を実行して、マシンにJavaをインストールします。 マシンにJavaをインストールしたら、正しいインストールディレクトリを指すように環境変数を設定する必要があります-
Windows 2000/XPのパスのセットアップ
_c:\ Program Files \ java \ jdk_ディレクトリにJavaがインストールされていると想定しています-
- 「マイコンピュータ」を右クリックして、「プロパティ」を選択します。
- 「詳細」タブの下の「環境変数」ボタンをクリックします。
- ここで、「Path」変数を変更して、Java実行可能ファイルへのパスも含まれるようにします。 たとえば、パスが現在「C:\ WINDOWS \ SYSTEM32」に設定されている場合、パスを「C:\ WINDOWS \ SYSTEM32; c:\ Program Files \ java \ jdk \ bin」に変更します。
Windows 95/98/MEのパスのセットアップ
_c:\ Program Files \ java \ jdk_ディレクトリにJavaがインストールされていると想定しています-
- 「C:\ autoexec.bat」ファイルを編集し、最後に次の行を追加します-「SET PATH =%PATH%; C:\ Program Files \ java \ jdk \ bin」
Linux、UNIX、Solaris、FreeBSDのパスのセットアップ
環境変数PATHは、Javaバイナリがインストールされている場所を指すように設定する必要があります。 これがうまくいかない場合は、シェルのドキュメントを参照してください。
たとえば、bashをシェルとして使用する場合は、 '。bashrcの最後に次の行を追加します:export PATH =/path/to/java:$ PATH'
人気のあるJavaエディター
Javaプログラムを作成するには、テキストエディターが必要です。 市場には多くの洗練されたIDEがあります。 しかし、今のところ、次のいずれかを検討することができます-
- メモ帳-Windowsマシンでは、メモ帳(このチュートリアルで推奨)、TextPadなどの単純なテキストエディタを使用できます。
- Netbeans -これは、オープンソースで無料のJava IDEであり、https://www.netbeans.org/indexlからダウンロードできます。
- Eclipse -また、eclipseオープンソースコミュニティによって開発されたJava IDEであり、https://www.eclipse.org/からダウンロードできます。
Common IO Archiveをダウンロード
commons-io-2.6-bin.zipからApache Common IO jarファイルの最新バージョンをダウンロードします。 このチュートリアルを書いている時点で、_commons-io-2.6-bin.zip_をダウンロードし、C:\> Apacheフォルダーにコピーしました。
OS | Archive name |
---|---|
Windows | commons-io-2.6-bin.zip |
Linux | commons-io-2.6-bin.tar.gz |
Mac | commons-io-2.6-bin.tar.gz |
Apache共通IO環境を設定する
*APACHE_HOME* 環境変数を設定して、マシン上のApache jarが保存されているベースディレクトリの場所を指すようにします。 次のように、さまざまなオペレーティングシステムのApacheフォルダーにcommons-io-2.6-bin.zipを抽出したと仮定します。
OS | Output |
---|---|
Windows | Set the environment variable APACHE_HOME to C:\Apache |
Linux | export APACHE_HOME=/usr/local/Apache |
Mac | export APACHE_HOME=/Library/Apache |
CLASSPATH変数を設定する
共通IO jarの場所を指すように CLASSPATH 環境変数を設定します。 次のように、さまざまなオペレーティングシステムのApacheフォルダーにcommons-io-2.6-bin.zipを保存しているとします。
OS | Output |
---|---|
Windows | Set the environment variable CLASSPATH to %CLASSPATH%;%APACHE_HOME%\commons-io-2.6.jar;.; |
Linux | export CLASSPATH=$CLASSPATH:$APACHE_HOME/commons-io-2.6.jar:. |
Mac | export CLASSPATH=$CLASSPATH:$APACHE_HOME/commons-io-2.6.jar:. |
Apache Commons IO-IOUtils
ファイルの読み取り、書き込み、コピーのためのユーティリティメソッドを提供します。 このメソッドは、InputStream、OutputStream、Reader、Writerで機能します。
クラス宣言
以下は org.apache.commons.io.IOUtils クラスの宣言です-
public class IOUtils
extends Object
特徴
- 入出力操作用の静的ユーティリティメソッドを提供します。
- toXXX()-ストリームからデータを読み取ります。
- write()-データをストリームに書き込みます。
- copy()-すべてのデータをストリームから別のストリームにコピーします。
- contentEquals-2つのストリームの内容を比較します。
IOUtilsクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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") );
}
}
}
出力
次の結果が出力されます。
Welcome to finddevguides. Simply Easy Learning.
Welcome to finddevguides. Simply Easy Learning.
Apache Commons IO-FileUtils
移動、開く、存在の確認、ファイルの読み取りなどのファイルを操作するメソッドを提供します。 これらのメソッドはファイルオブジェクトを使用します。
クラス宣言
以下は org.apache.commons.io.FileUtils クラスの宣言です-
public class FileUtils
extends Object
特徴
- ファイルに書き込むメソッド。
- ファイルから読み取るメソッド。
- 親ディレクトリを含むディレクトリを作成するメソッド。
- ファイルとディレクトリをコピーする方法。
- ファイルとディレクトリを削除する方法。
- URLとの間で変換するメソッド。
- フィルターと拡張子によってファイルとディレクトリをリストするメソッド。
- ファイルの内容を比較する方法。
- 最終変更日を記録する方法。
- チェックサムを計算する方法。
FileUtilsクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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);
}
}
出力
次の結果が出力されます。
Temp
Welcome to finddevguides. Simply Easy Learning.
Apache Commons IO-FilenameUtils
ファイルオブジェクトを使用せずにファイル名を操作する方法を提供します。 同様の方法で異なるオペレーティングシステムで動作します。 このクラスは、Windowsベースの開発マシンからUnixベースの生産マシンに移行する際の問題を解決します。
クラス宣言
以下は org.apache.commons.io.FilenameUtils クラスの宣言です-
public class FilenameUtils
extends Object
特徴
このクラスは、ファイル名内の6つのコンポーネントを定義します。 例の場所を C:\ dev \ project \ file.txt として考えてください。 その後、コンポーネントは-
- プレフィックス-C:\
- 相対パス-dev \ project \
- 絶対パス-C:\ dev \ project \
- 名前-file.txt
- ベース名-ファイル
- 拡張子-txt
ディレクトリを識別するには、ファイル名に区切り文字を追加します。
FilenameUtilsクラスの例
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));
}
}
出力
次の結果が出力されます。
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
Apache Commons IO-FileSystemUtils
ディスクドライブの空き領域を取得する方法を提供します。
クラス宣言
以下は org.apache.commons.io.FileSystemUtils クラスの宣言です-
public class FileSystemUtils
extends Object
FileSystemUtilsクラスの例
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());
}
}
}
出力
次の結果が出力されます。
Free Space 61355640 kb
Apache Commons IO-IOCase
IOの大文字と小文字の区別の列挙。 オペレーティングシステムごとに、ファイル名の大文字と小文字の区別に関するルールが異なります。 たとえば、Windowsではファイル名の大文字と小文字が区別されませんが、Unixでは大文字と小文字が区別されます。 IOCaseはその違いをキャプチャし、ファイル名の比較の実行方法を制御する列挙を提供します。 また、列挙を使用して比較を実行するメソッドも提供します。
列挙宣言
以下は org.apache.commons.io.IOCase 列挙型の宣言です-
public enum IOCase
extends Enum<IOCase> implements Serializable
IOCase列挙の例
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 finddevguides. Simply Easy Learning.";
String text1 = "WELCOME TO finddevguides. 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));
}
}
出力
次の結果が出力されます。
Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true
Apache Commons IO-LineIterator
行ベースのファイルを操作するための柔軟な方法を提供します。
クラス宣言
以下は org.apache.commons.io.LineIterator クラスの宣言です-
public class LineIterator
extends Object implements Iterator<String>, Closeable
LineIteratorクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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());
}
}
}
}
出力
次の結果が出力されます。
Contents of input.txt
Welcome to finddevguides. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.
Apache Commons IO-NameFileFilter
名前のファイル名をフィルタリングします。
クラス宣言
以下は org.apache.commons.io.filefilter.NameFileFilter クラスの宣言です-
public class NameFileFilter
extends AbstractFileFilter implements Serializable
NameFileFilterクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. Simply Easy Learning.
現在のディレクトリ内のすべてのファイルとディレクトリを印刷してから、Input.txtという名前のファイルをフィルター処理します。
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]);
}
}
}
出力
次の結果が出力されます。
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with name input.txt
input.txt
Apache Commons IO-WildcardFileFilter
指定されたワイルドカードを使用してファイルをフィルタリングします。
クラス宣言
以下は org.apache.commons.io.filefilter.WildcardFileFilter クラスの宣言です-
public class WildcardFileFilter
extends AbstractFileFilter implements Serializable
WildcardFileFilterクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. Simply Easy Learning.
現在のディレクトリ内のすべてのファイルとディレクトリを印刷して、名前が 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]);
}
}
}
出力
次の結果が出力されます。
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File name ending with t
.project
input.txt
Apache Commons IO-SuffixFileFilter
サフィックスに基づいてファイルをフィルタリングします。 これは、特定のタイプのすべてのファイルを取得する際に使用されます。
クラス宣言
以下は org.apache.commons.io.filefilter.SuffixFileFilter クラスの宣言です-
public class SuffixFileFilter
extends AbstractFileFilter implements Serializable
SuffixFileFilterクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. Simply Easy Learning.
現在のディレクトリ内のすべてのファイルとディレクトリを印刷し、拡張子txtでファイルをフィルターしましょう。
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]);
}
}
}
出力
次の結果が出力されます。
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
Apache Commons IO-PrefixFileFilter
プレフィックスに基づいてファイルをフィルタリングします。
クラス宣言
以下は org.apache.commons.io.filefilter.PrefixFileFilter クラスの宣言です-
public class PrefixFileFilter
extends AbstractFileFilter implements Serializable
PrefixFileFilterクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. Simply Easy Learning.
現在のディレクトリ内のすべてのファイルとディレクトリを印刷し、入力で始まる名前のファイルをフィルタリングしてみましょう。
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]);
}
}
}
出力
次の結果が出力されます。
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
Apache Commons IO-OrFileFilter
ファイルフィルタのリスト全体に条件付きORロジックを提供します。 リスト内のいずれかのフィルターがtrueを返す場合、trueを返します。 そうでなければ、falseを返します。
クラス宣言
以下は org.apache.commons.io.filefilter.OrFileFilter クラスの宣言です-
public class OrFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
OrFileFilterクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. Simply Easy Learning.
現在のディレクトリ内のすべてのファイルとディレクトリを印刷してから、で始まる名前のファイルをフィルタリングしてみましょう。 またはtで終わる。
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]);
}
}
}
出力
次の結果が出力されます。
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.classpath
.project
.settings
input.txt
Apache Commons IO-AndFileFilter
ファイルフィルターのリスト全体に条件付きANDロジックを提供します。 リスト内のすべてのフィルターがtrueを返す場合、trueを返します。 そうでなければ、falseを返します。
クラス宣言
以下は org.apache.commons.io.filefilter.AndFileFilter クラスの宣言です-
public class AndFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
AndFileFilterクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. Simply Easy Learning.
現在のディレクトリ内のすべてのファイルとディレクトリを印刷してから、で始まる名前のファイルをフィルタリングしてみましょう。 そして、tで終わります。
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]);
}
}
}
出力
次の結果が出力されます。
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.project
Apache Commons IO-FileEntry
ある時点でのファイルまたはディレクトリの状態、ファイル属性を提供します。
クラス宣言
以下は org.apache.commons.io.monitor.FileEntry クラスの宣言です-
public class FileEntry
extends Object implements Serializable
特徴
FileEntryクラスオブジェクトは、ある時点で次のファイル属性を提供します。
- getName()-ファイル名。
- exists()-ファイルが存在するかどうかを確認します。
- isDirectory()-ファイルがディレクトリかどうかを確認します。
- lastModified()-最終変更日時を提供します。
- listFiles()-ディレクトリのコンテンツを提供します。
FileEntryクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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());
}
}
出力
次の結果が出力されます。
Monitored File: input.txt
File name: input.txt
Is Directory: false
コモンズIO-FileAlterationObserver
ルートディレクトリの下のファイルの状態を表し、ファイルシステムをチェックし、作成、変更、または削除イベントをリスナーに通知します。
クラス宣言
以下は org.apache.commons.io.monitor.FileAlterationObserver クラスの宣言です-
public class FileAlterationObserver
extends Object implements Serializable
FileAlterationObserverクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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) {
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());
}
}
}
出力
次の結果が出力されます。
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
Apache Commons IO-FileAlterationMonitor
指定した間隔で登録されたFileAlterationObserverをトリガーする監視スレッドを生成するスレッドを表します。
クラス宣言
以下は org.apache.commons.io.monitor.FileAlterationMonitor クラスの宣言です-
public final class FileAlterationMonitor
extends Object implements Runnable
FileAlterationMonitorクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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());
}
}
}
出力
次の結果が出力されます。
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
Apache Commons IO-NameFileComparator
2つのファイルの名前を比較します。 NameFileComparatorを使用して、大文字と小文字を区別する、大文字と小文字を区別しない、またはシステムに依存する大文字と小文字を区別する方法で、名前を使用してファイルのリストまたは配列をソートできます。
クラス宣言
以下は org.apache.commons.io.comparator.NameFileComparator クラスの宣言です-
public class NameFileComparator
extends Object implements Serializable
NameFileComparatorクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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());
}
}
}
出力
次の結果が出力されます。
Sorted By Name:
.classpath
.project
input.txt
Apache Commons IO-SizeFileComparator
2つのファイル/ディレクトリのサイズを比較します。 SizeFileComparatorを使用して、サイズに基づいてファイルのリストまたは配列をソートしたり、noに基づいてディレクトリを使用したりできます。 子どもたちの。
クラス宣言
以下は org.apache.commons.io.comparator.SizeFileComparator クラスの宣言です-
public class SizeFileComparator
extends Object implements Serializable
SizeFileComparatorクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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());
}
}
}
出力
次の結果が出力されます。
Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441
コモンズIO-LastModifiedFileComparator
2つのファイル/ディレクトリの最終変更日を比較します。 LastModifiedFileComparatorは、最終変更日を使用してファイル/ディレクトリのリストまたは配列をソートするために使用できます。
クラス宣言
以下は org.apache.commons.io.comparator.LastModifiedFileComparator クラスの宣言です-
public class LastModifiedFileComparator
extends Object implements Serializable
LastModifiedFileComparatorクラスの例
ここに解析する必要がある入力ファイルがあります-
Welcome to finddevguides. 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()));
}
}
}
出力
次の結果が出力されます。
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
Apache Commons IO-TeeInputStream
これは、プロキシ化されたストリームから読み取られたすべてのバイトのコピーを指定されたOutputStreamに透過的に書き込むInputStreamプロキシです。 このプロキシでclose()メソッドが呼び出されると、プロキシ化された入力ストリームが閉じられます。 一度に2つのストリームをまとめて操作するために使用できます。
クラス宣言
以下は org.apache.commons.io.input.TeeInputStream クラスの宣言です-
public class TeeInputStream
extends ProxyInputStream
TeeInputStreamクラスの例
この例では、TeeInputStreamを閉じると、TeeInputStreamオブジェクトとTeeOutputStreamオブジェクトが閉じます。
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 finddevguides. 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());
}
}
}
}
出力
次の結果が出力されます。
Output stream 1: Welcome to finddevguides. Simply Easy Learning.
Output stream 2: Welcome to finddevguides. Simply Easy Learning.
Apache Commons IO-TeeOutputStream
TeeOutputStreamはOutputStreamを分割します。 unixの「tee」コマンドにちなんで名付けられました。 ストリームを2つのストリームに分岐できます。
クラス宣言
以下は org.apache.commons.io.output.TeeOutputStream クラスの宣言です-
public class TeeOutputStream
extends ProxyOutputStream
TeeOutputStreamクラスの例
この例では、TeeOutputStreamは2つの出力ストリームをパラメーターとして受け入れ、データを両方の出力ストリームにTeeOutputStreamセットデータに渡します。
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 finddevguides. 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());
}
}
}
}
出力
次の結果が出力されます。
Output stream 1: Welcome to finddevguides. Simply Easy Learning.
Output stream 2: Welcome to finddevguides. Simply Easy Learning.