import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
// ファイルの読み込みと書き込みを行うインターフェイス
interface FileOperation {
String readFile(String filePath) throws IOException;
void writeFile(String filePath, String content) throws IOException;
}
// FileOperation インターフェイスの実装クラス
class FileHandler implements FileOperation {
@Override
public String readFile(String filePath) throws IOException {
StringBuilder content = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
content.append(line).append('\n');
}
}
return content.toString();
}
@Override
public void writeFile(String filePath, String content) throws IOException {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write(content);
}
}
}
public class Main {
public static void main(String[] args) {
// ファイルの読み込みと書き込みを行うための FileHandler インスタンスを生成
FileOperation fileHandler = new FileHandler();
// 読み込むファイルのパス
String filePath = "example.txt";
try {
// ファイルの内容を読み込み
String fileContent = fileHandler.readFile(filePath);
System.out.println("File Content:\n" + fileContent);
// 書き込む内容
String newContent = "This is new content.";
// ファイルに新しい内容を書き込み
fileHandler.writeFile(filePath, newContent);
System.out.println("File Content After Writing:\n" + fileHandler.readFile(filePath));
} catch (IOException e) {
e.printStackTrace();
}
}
}
この例では、FileHandler
クラスが FileOperation
インターフェイスを実装しており、ファイルの読み込みと書き込みを行います。Main
クラスでは、FileHandler
クラスのインスタンスを生成し、ファイルの読み書き操作を実行しています。
ファイル操作のためのインターフェイス
ファイル操作のためのインターフェイスを設計することは、異なるクラスが共通のファイル操作メソッドを提供し、コードの再利用性と拡張性を高める手段です。以下に、このアプローチの解説を示します。
ファイル操作のためのインターフェイス(FileOperation)
import java.io.IOException;
interface FileOperation {
String readFile(String filePath) throws IOException;
void writeFile(String filePath, String content) throws IOException;
}
readFile
メソッド: ファイルの指定されたパスから内容を読み取り、文字列として返します。このメソッドはIOException
をスローする可能性があるため、呼び出し元で例外処理が必要です。writeFile
メソッド: 指定されたパスのファイルに指定された内容を書き込みます。同様に、このメソッドもIOException
をスローする可能性があります。
ファイル操作の実装クラス(FileHandler)
import java.io.*;
class FileHandler implements FileOperation {
@Override
public String readFile(String filePath) throws IOException {
StringBuilder content = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
content.append(line).append('\n');
}
}
return content.toString();
}
@Override
public void writeFile(String filePath, String content) throws IOException {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write(content);
}
}
}
readFile
メソッドの実装:BufferedReader
を使用して指定されたファイルから行を読み取り、それを文字列に追加します。writeFile
メソッドの実装:BufferedWriter
を使用して指定されたファイルに文字列を書き込みます。
このように、FileHandler
クラスは FileOperation
インターフェイスを実装し、ファイルの読み書きメソッドを提供しています。他のクラスがファイル操作を行いたい場合、FileOperation
インターフェイスを実装することで、同じインターフェイスを介してファイル操作の機能を利用できます。