Java Mania

Java Mania

ファイル入出力

ファイルの入出力を扱うクラス。まだまだ改良の余地ありだが、とりあえず良く使う機能のみを作成した。 クラス自体はAPIにあるファイルの入出力関連のメソッドを利用しているだけなので、特に明記すべき点はない。
HomePageTop▲

Source -FileUtil.java-

package mania.util;

import java.io.*;

/**
 * ファイルの入出力に関する操作クラス
 * 
 * @author JavaMania
 * @version 1.0
 */
public class FileUtil {

	/** Default Encoding */
	private static String DEFAULT_ENC = System.getProperty("file.encoding");

	/**
	 * 第2引数に与えられたファイルに第1引数のテキストを書き込む。
* エンコードはシステムデフォルトのエンコーディングを使用する。 * * @param txt * ファイルに書き込む文字列 * @param file * 書き込むファイル名 * @throws IOException */ public static void write(String txt, File file) throws IOException { write(txt, file, DEFAULT_ENC); } /** * 第2引数に与えられたファイルに第1引数のテキストを書き込む。
* 第3引数はエンコードを指定するが、システムデフォルトのエンコーディングを
* 使用する場合は不要である。 * * @param txt * ファイルに書き込む文字列 * @param file * 書き込むファイル名 * @param charset * エンコーディング * @throws IOException */ public static void write(String txt, File file, String charset) throws IOException { FileOutputStream fo = new FileOutputStream(file); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fo, charset)); bw.write(txt); bw.close(); fo.close(); } /** * 第1引数に与えられたファイルからテキストを読み込む。
* エンコードはシステムデフォルトのエンコーディングを使用する。 * * @param file * 読み込むファイル名 * @return 読み込んだ文字列 * @throws IOException */ public static String read(File file) throws IOException { return read(file, DEFAULT_ENC); } /** * 第1引数に与えられたファイルからテキストを読み込む。
* 第2引数はエンコードを指定するが、システムデフォルトのエンコーディングを
* 使用する場合は不要である。 * * @param file * 読み込むファイル名 * @param charset * エンコーディング * @return 読み込んだ文字列 * @throws IOException */ public static String read(File file, String charset) throws IOException { StringBuffer res = new StringBuffer(); FileInputStream fi = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fi, charset)); int ch = 0; while ((ch = br.read()) != -1) { res.append((char) ch); } br.close(); fi.close(); return res.toString(); } /** * 第1引数に与えられたファイルを第2引数で与えられたファイルにコピーする。
* エンコードはシステムデフォルトのエンコーディングを使用する。 * * @param readFile * コピー元ファイル * @param writeFile * コピー先ファイル * @throws IOException */ public static void copy(File readFile, File writeFile) throws IOException { write(read(readFile), writeFile); } /** * 第1引数に与えられたファイルを第2引数で与えられたファイルにコピーする。
* エンコードはシステムデフォルトのエンコーディングを使用する。 * * @param file1 * コピー元ファイル * @param cs1 * コピー元エンコーディング * @param file2 * コピー先ファイル * @param cs2 * コピー先エンコーディング * @throws IOException */ public static void copy(File file1, String cs1, File file2, String cs2) throws IOException { write(read(file1, cs1), file2, cs2); } }
HomePageTop▲

Javadoc -FileUtil.java-

メソッドの概要
static void copy(java.io.File readFile, java.io.File writeFile)
          第1引数に与えられたファイルを第2引数で与えられたファイルにコピーする。
static void copy(java.io.File file1, java.lang.String cs1, java.io.File file2, java.lang.String cs2)
          第1引数に与えられたファイルを第2引数で与えられたファイルにコピーする。
static java.lang.String read(java.io.File file)
          第1引数に与えられたファイルからテキストを読み込む。
static java.lang.String read(java.io.File file, java.lang.String charset)
          第1引数に与えられたファイルからテキストを読み込む。
static void write(java.lang.String txt, java.io.File file)
          第2引数に与えられたファイルに第1引数のテキストを書き込む。
static void write(java.lang.String txt, java.io.File file, java.lang.String charset)
          第2引数に与えられたファイルに第1引数のテキストを書き込む。
HomePageTop▲

How To Use -使用方法-

FileUtilクラスは下記のように使用する。 close()処理を書かなくて良い分簡単になったと思う。

下記のMainクラスを実行すると、Mainと同じ階層に「test.txt」と「copy.txt」という 2種類のファイルが作成され、中身は両方共「hello」と書かれていることが確認できる。
import java.io.File;
import java.io.IOException;

import mania.util.FileUtil;

public class Main
{

  public static void main(String[] args)
  {
    String str = "hello";
    File test = new File("test.txt");
    File copy = new File("copy.txt");
    try
    {
      System.out.println("===実行結果===");
      // ファイルへの書き込み
      FileUtil.write(str, test);

      // ファイルの読み込み
      System.out.println("test.txtの中身:" + FileUtil.read(test));

      // ファイルのコピー
      FileUtil.copy(test, copy);

      // ファイルの読み込み
      System.out.println("copy.txtの中身:" + FileUtil.read(test));
    }
    catch(IOException e)
    {
      e.printStackTrace();
    }
  }
}

===実行結果===
test.txtの中身:hello
copy.txtの中身:hello

HomePageTop▲

Copyright (C) 2006, JavaMania. All Rights Reserved.