入出力機能を持ったファイルクラス
package org.dyndns.rhmusic;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* 入出力機能を持ったファイルクラス
* @author Paradigm-Shift
*/
public class FileRh extends File{
/**
* シリアルバージョンID
*/
private static final long serialVersionUID = -2843662886836357164L;
/** ファイル名 */
private String path;
/** エンコード */
private String encode = System.getProperty("file.encoding");
/** 改行文字 */
private String lineFeed = System.getProperty("line.separator");
/**
* ファイル名を指定してオブジェクトを生成
* @param pathname ファイル名
*/
public FileRh(final String pathname) {
super(pathname);
this.path = pathname;
}
/**
* ファイル名とエンコードを指定してオブジェクトを生成
* @param pathname ファイル名
* @param encode エンコード
*/
public FileRh(final String pathname, final String encode) {
super(pathname);
this.path = pathname;
this.encode = encode;
}
/**
* ファイル名とエンコード、改行文字を指定してオブジェクトを生成
* @param pathname ファイル名
* @param encode エンコード
* @param lf 改行文字
*/
public FileRh(final String pathname, final String encode, final String lf) {
super(pathname);
this.path = pathname;
this.encode = encode;
this.lineFeed = lf;
}
/**
* ファイルの内容を文字列で取得する
* @param inlf 改行文字。nullの場合、システムのデフォルト改行文字が使用される。
* @param enc エンコード。nullの場合、システムのデフォルト文字コードが使用される。
* @return
*/
public String readFile(final String inlf, final String inenc) {
String lf = inlf;
String enc = inenc;
if (lf == null) {
lf = this.lineFeed;
} else if(enc == null) {
enc = this.encode;
}
return read(inlf, enc);
}
/**
* ファイルの内容を文字列で取得する
* @return ファイルの内容
*/
public String readFile() {
return read(this.lineFeed, this.encode);
}
/**
* ファイルの内容を文字列で取得する
* @param lineFeed 改行文字
* @param encode エンコード
* @return ファイルの内容
*/
private String read(final String lf, final String encode) {
BufferedReader reader = null;
FileInputStream fileInputStream = null;
StringBuilder message = null;
try {
fileInputStream = new FileInputStream(this.path);
final String enc = encode;
reader = new BufferedReader(new InputStreamReader(fileInputStream, enc));
final String lfCd = lf;
message = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
message.append(line).append(lfCd);
}
} catch (final FileNotFoundException e) {
e.printStackTrace();
} catch (final IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (final Exception e) {
e.printStackTrace();
}
}
return message.toString();
}
/**
*
* @param isOverWrite 上書きするかどうか。 true 上書き, false 追記
* @param inMassage ファイルに書き込む文字列
* @param エンコード。nullの場合、システムのデフォルト文字コードが使用される。
* @return 正常に出力されればtrue
* @throws IOException
*/
public boolean writeFile(final boolean isOverWrite, final String message, final String enc) throws IOException {
if (message == null) {
throw new IOException("ファイルの内容が空です。");
}
return write(message, enc, isOverWrite);
}
/**
* ファイルに出力する
* @param message 出力する文字列
* @param enc エンコード
* @param isOverWrite 上書きするかどうか。 true 上書き, false 追記
* @return 正常に出力されればtrue
*/
private boolean write(final String message, final String enc, boolean isOverWrite) {
FileOutputStream fileOutputStream = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try {
fileOutputStream = new FileOutputStream(this.path, !isOverWrite);//第2引数が[true]の場合は追記、[false]にすると上書き
outputStreamWriter = new OutputStreamWriter(fileOutputStream, enc);
bufferedWriter = new BufferedWriter(outputStreamWriter);
//ファイルが無ければ生成し、あればそのファイルに追記
bufferedWriter.write(message);
} catch (final Exception e) {
e.printStackTrace();
} finally {
try {
bufferedWriter.close();
outputStreamWriter.close();
fileOutputStream.close();
} catch (final IOException e) {
e.printStackTrace();
}
}
return true;
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* 入出力機能を持ったファイルクラス
* @author Paradigm-Shift
*/
public class FileRh extends File{
/**
* シリアルバージョンID
*/
private static final long serialVersionUID = -2843662886836357164L;
/** ファイル名 */
private String path;
/** エンコード */
private String encode = System.getProperty("file.encoding");
/** 改行文字 */
private String lineFeed = System.getProperty("line.separator");
/**
* ファイル名を指定してオブジェクトを生成
* @param pathname ファイル名
*/
public FileRh(final String pathname) {
super(pathname);
this.path = pathname;
}
/**
* ファイル名とエンコードを指定してオブジェクトを生成
* @param pathname ファイル名
* @param encode エンコード
*/
public FileRh(final String pathname, final String encode) {
super(pathname);
this.path = pathname;
this.encode = encode;
}
/**
* ファイル名とエンコード、改行文字を指定してオブジェクトを生成
* @param pathname ファイル名
* @param encode エンコード
* @param lf 改行文字
*/
public FileRh(final String pathname, final String encode, final String lf) {
super(pathname);
this.path = pathname;
this.encode = encode;
this.lineFeed = lf;
}
/**
* ファイルの内容を文字列で取得する
* @param inlf 改行文字。nullの場合、システムのデフォルト改行文字が使用される。
* @param enc エンコード。nullの場合、システムのデフォルト文字コードが使用される。
* @return
*/
public String readFile(final String inlf, final String inenc) {
String lf = inlf;
String enc = inenc;
if (lf == null) {
lf = this.lineFeed;
} else if(enc == null) {
enc = this.encode;
}
return read(inlf, enc);
}
/**
* ファイルの内容を文字列で取得する
* @return ファイルの内容
*/
public String readFile() {
return read(this.lineFeed, this.encode);
}
/**
* ファイルの内容を文字列で取得する
* @param lineFeed 改行文字
* @param encode エンコード
* @return ファイルの内容
*/
private String read(final String lf, final String encode) {
BufferedReader reader = null;
FileInputStream fileInputStream = null;
StringBuilder message = null;
try {
fileInputStream = new FileInputStream(this.path);
final String enc = encode;
reader = new BufferedReader(new InputStreamReader(fileInputStream, enc));
final String lfCd = lf;
message = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
message.append(line).append(lfCd);
}
} catch (final FileNotFoundException e) {
e.printStackTrace();
} catch (final IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (final Exception e) {
e.printStackTrace();
}
}
return message.toString();
}
/**
*
* @param isOverWrite 上書きするかどうか。 true 上書き, false 追記
* @param inMassage ファイルに書き込む文字列
* @param エンコード。nullの場合、システムのデフォルト文字コードが使用される。
* @return 正常に出力されればtrue
* @throws IOException
*/
public boolean writeFile(final boolean isOverWrite, final String message, final String enc) throws IOException {
if (message == null) {
throw new IOException("ファイルの内容が空です。");
}
return write(message, enc, isOverWrite);
}
/**
* ファイルに出力する
* @param message 出力する文字列
* @param enc エンコード
* @param isOverWrite 上書きするかどうか。 true 上書き, false 追記
* @return 正常に出力されればtrue
*/
private boolean write(final String message, final String enc, boolean isOverWrite) {
FileOutputStream fileOutputStream = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try {
fileOutputStream = new FileOutputStream(this.path, !isOverWrite);//第2引数が[true]の場合は追記、[false]にすると上書き
outputStreamWriter = new OutputStreamWriter(fileOutputStream, enc);
bufferedWriter = new BufferedWriter(outputStreamWriter);
//ファイルが無ければ生成し、あればそのファイルに追記
bufferedWriter.write(message);
} catch (final Exception e) {
e.printStackTrace();
} finally {
try {
bufferedWriter.close();
outputStreamWriter.close();
fileOutputStream.close();
} catch (final IOException e) {
e.printStackTrace();
}
}
return true;
}
}