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 インターフェイスを実装することで、同じインターフェイスを介してファイル操作の機能を利用できます。


