JDK ネイティブ ファイル操作を使用する
JDK では、Java I/O API を使用してファイルやフォルダーを操作できます。Java I/O API は、ファイルやフォルダーを操作するための多くのクラスとインターフェイスを提供します。以下に、一般的に使用される Java I/O API クラスをいくつか示します。
- -
java.io.File
ファイルとフォルダーのパス、およびファイルとフォルダーのプロパティと操作を表すために使用されます。 - -
java.io.FileInputStream
ファイルからデータを読み取るために使用されます。 - -
java.io.FileOutputStream
データをファイルに書き込むために使用されます。 - -
java.io.FileReader
ファイルから文字を読み取るために使用されます。 - -
java.io.FileWriter
ファイルに文字を書き込むために使用されます。 - -
java.io.BufferedReader
文字ストリームからテキストを読み取るために使用されます。 - -
java.io.BufferedWriter
文字ストリームにテキストを書き込むために使用されます。
ファイルを作成する
Java では、java.io.File
クラス。以下に例を示します。
import java.io.File;
public class FileCreateExample {
public static void main(String[] args) {
File file = new File("test.txt");
try {
if (file.createNewFile()) {
System.out.println("File created: " + file.getName());
} else {
System.out.println("File already exists.");
}
} catch (Exception e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
この例では、File
オブジェクト、createNewFile
メソッドを使用して「test.txt」という名前のファイルを作成しました。ファイルがすでに存在する場合は、「ファイルはすでに存在します。」と表示されます。
ファイルを読み取る
Java では、java.io.FileInputStream
クラスを。以下に例を示します。
import java.io.FileInputStream;
public class FileReadExample {
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("test.txt");
int i;
while ((i = fileInputStream.read()) != -1) {
System.out.print((char) i);
}
fileInputStream.close();
} catch (Exception e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
この例では、FileInputStream
クラス「test.txt」ファイルからデータを読み取ります。次に、while
ループファイルの内容を 1 文字ずつ読み取り、出力します。
ファイルに書き込む
Java では、java.io.FileOutputStream
クラス。以下は例です
import java.io.FileOutputStream;
public class FileWriteExample {
public static void main(String[] args) {
try {
FileOutputStream fileOutputStream = new FileOutputStream("test.txt");
String text = "Hello, World!";
byte[] bytes = text.getBytes();
fileOutputStream.write(bytes);
fileOutputStream.close();
System.out.println("Successfully wrote to the file.");
} catch (Exception e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
この例では、FileOutputStream
クラス「Hello, World!」文字列を「test.txt」ファイルに書き込みます。
ファイルの削除
Java では、java.io.File
クラス。以下に例を示します。
import java.io.File;
public class FileDeleteExample {
public static void main(String[] args) {
File file = new File("test.txt");
if (file.delete()) {
System.out.println("File deleted: " + file.getName());
} else {
System.out.println("Failed to delete the file.");
}
}
}
この例では、File
オブジェクト、delete
メソッドを使用して「test.txt」という名前のファイルを削除しました。
ファイルをコピーする
Java では、java.io.FileInputStream
およびjava.io.FileOutputStream
クラスを使用してファイルをコピーできます。以下に例を示します。
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileCopyExample {
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("test.txt");
FileOutputStream fileOutputStream = new FileOutputStream("test_copy.txt");
byte[] buffer = new byte[1024];
int length;
while ((length = fileInputStream.read(buffer)) > 0) {
fileOutputStream.write(buffer, 0, length);
}
fileInputStream.close();
fileOutputStream.close();
System.out.println("File copied successfully.");
} catch (Exception e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
この例では、FileInputStream
クラス「test.txt」ファイルからデータを読み取り、FileOutputStream
クラスを使用してデータを「test_copy.txt」ファイルに書き込みます。
ファイルの名前を変更
Java では、java.io.File
クラス。以下に例を示します。
import java.io.File;
public class FileRenameExample {
public static void main(String[] args) {
File file = new File("test.txt");
File renamedFile = new File("test_renamed.txt");
if (file.renameTo(renamedFile)) {
System.out.println("File renamed successfully.");
} else {
System.out.println("Failed to rename the file.");
}
}
}
この例では、File
オブジェクト、renameTo
メソッドを使用して「test.txt」ファイルの名前を「test_renamed.txt」に変更します。
ファイルを見つける
Java では、java.io.File
このクラス。以下に例を示します。
import java.io.File;
public class FileSearchExample {
public static void main(String[] args) {
File dir = new File(".");
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile()) {
System.out.println("File: " + file.getName());
} else if (file.isDirectory()) {
System.out.println("Directory: " + file.getName());
}
}
}
}
この例では、現在のディレクトリを表すFile
オブジェクトlistFiles
、メソッドを使用して現在のディレクトリ内のすべてのファイルとフォルダを取得し、for ループを使用して各ファイルとフォルダの名前を出力します。
Apache Commons IO ライブラリの使用
JDK のネイティブ ファイル操作クラスの使用に加えて、ファイル操作にサードパーティのクラス ライブラリを使用することもできます。Apache Commons IO は、非常に人気のある Java ファイル操作クラス ライブラリであり、ファイル操作を容易にする多くの便利なクラスとメソッドを提供します。以下は、ファイル操作に Apache Commons IO ライブラリを使用する方法を示すサンプル コードです。
ファイルに書き込む
Apache Commons IO ライブラリを使用すると、ファイルへの書き込みがさらに簡単になります。以下は、FileUtils
クラス。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileWriteExample {
public static void main(String[] args) {
try {
File file = new File("test.txt");
String text = "Hello, World!";
FileUtils.writeStringToFile(file, text, "UTF-8");
System.out.println("Successfully wrote to the file.");
} catch (IOException e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
この例では、FileUtils.writeStringToFile
メソッド文字列をファイルに書き込みます。このメソッドはファイルを自動的に作成するか、既存のファイルが存在する場合は上書きします。
ファイルの削除
ファイルの削除も、Apache Commons IO ライブラリを使用すると非常に簡単です。FileUtils
ファイルを削除するクラスの使用例を次に示します。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileDeleteExample {
public static void main(String[] args) {
File file = new File("test.txt");
try {
FileUtils.forceDelete(file);
System.out.println("File deleted: " + file.getName());
} catch (IOException e) {
System.out.println("Failed to delete the file.");
e.printStackTrace();
}
}
}
この例では、ファイルを削除するFileUtils.forceDelete
メソッド。File
クラスのメソッドとは異なりdelete
、FileUtils.forceDelete
このメソッドは空ではないフォルダーを削除できます。
ファイルをコピーする
Apache Commons IO ライブラリを使用すると、ファイルのコピーも非常に簡単になります。以下は、FileUtils
クラス。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileCopyExample {
public static void main(String[] args) {
try {
File srcFile = new File("test.txt");
File destFile = new File("test_copy.txt");
FileUtils.copyFile(srcFile, destFile);
System.out.println("File copied successfully.");
} catch (IOException e)
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
この例では、あるファイルを別のファイルにコピーするFileUtils.copyFile
メソッド。このメソッドはターゲット ファイルを自動的に作成します。ターゲット ファイルが既に存在する場合は、既存のファイルを上書きします。
ファイルとフォルダーを一覧表示する
Apache Commons IO ライブラリを使用すると、ファイルとフォルダーの一覧表示も非常に簡単になります。以下は、FileUtils
クラス。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.util.Collection;
public class FileSearchExample {
public static void main(String[] args) {
File dir = new File(".");
Collection<File> files = FileUtils.listFilesAndDirs(dir, null, true);
for (File file : files) {
if (file.isFile()) {
System.out.println("File: " + file.getName());
} else if (file.isDirectory()) {
System.out.println("Directory: " + file.getName());
}
}
}
}
この例では、FileUtils.listFilesAndDirs
メソッド指定されたディレクトリ内のすべてのファイルとフォルダーを取得します。このメソッドはCollection
、File
すべてのファイルとフォルダーを含むオブジェクトを返します。
結論は
Java でのファイル操作は非常に一般的なタスクです。JDK には、ファイル操作を簡単に実行できる便利なクラスとメソッドが多数用意されています。さらに、Apache Commons IO など、ファイル操作をより簡単に実行できるサードパーティ ライブラリが多数あります。JDK を使用する場合でも、サードパーティのクラス ライブラリを使用する場合でも、ファイル操作は簡単です。