- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2017-07-12T17:15:52+09:00","","")
#navi(../)
* テキストファイルを追記モード開き文字列を追加する [#bdc3cc87]
テキストファイルが存在する場合は、そのテキストファイルの末尾に入力した文字を追記し、~
存在しない場合は、新規にファイルを作成し、入力したテキストを出力するサンプルソースになります。~
* 関連記事 [#cbe2f795]
-[[テキストファイルの読み込みサンプル>ファイル操作/テキストファイルの読み込み]]
-[[テキストファイルの出力>ファイル操作/テキストファイルの出力]]
//-[[ファイルを追記モード開き文字列を追加する>ファイル操作/ファイルを追記モード開き文字列を追加する]]
-[[CSV取込みサンプルを作ってみた>ファイル操作/CSV取込みサンプルを作ってみた]]
* テキストをファイルに追記するサンプルコード [#e43aa35d]
本サンプルソースは、以下の記事とほとんど一緒です。
-[[テキストファイル作成および出力>ファイル操作/テキストファイルの出力]]
上行のリンクと異なる箇所(重要な箇所)は、以下の行になります。
FileOutputStream fos = new FileOutputStream(this.getFilename(), true)
FileOutputStreamの2番目の引数にtrueを指定しています。~
2番目の引数はappendを意味し、trueを指定することにより追記書き込みとなります。~
-[[クラス FileOutputStream>https://docs.oracle.com/javase/jp/6/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File,%20boolean)]]
#ref(AddText.java)
** サンプルプログラムの操作について [#jf55a56a]
キーボードから文字を入力し、入力した文字列をファイルに出力します。~
文字の入力を終了するには、.(dot)のみ入力してEnterキーを押してください。~
本サンプルプログラムが終了します。~
** サンプルソース [#d83be623]
&ref(AddText.java); UTF-8, LF
import java.lang.Exception;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.BufferedReader;
class AddText {
String filename;
private void setFilename(String s) {
this.filename = s;
}
private String getFilename() {
return this.filename;
}
private void usage() {
System.err.println("Usage: java AddText <add filename>");
System.exit(1);
}
private boolean inputLine(OutputStreamWriter osw) {
boolean ret = true;
try {
System.out.print("> "); // prompt
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String in = br.readLine();
if (in.equals(".")) { ret = false; } // input terminator
else { osw.write(in + System.getProperty("line.separator")); } // output input string
// br.close(); // stdinなので閉じる必要なし・閉じれない(閉じると例外発生)
// isr.close(); // stdinなので閉じる必要なし・閉じれない(閉じると例外発生)
} catch (Exception e) {
e.printStackTrace();
System.exit(2);
}
return ret;
}
private void run() {
String charcode = System.getProperty("file.encoding"); // default character code
try {
FileOutputStream fos = new FileOutputStream(this.getFilename(), true); // append is true
OutputStreamWriter osw = new OutputStreamWriter(fos, charcode);
while (inputLine(osw));
osw.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
System.exit(3);
}
}
AddText(String[] args) {
if (args.length != 1) {
usage();
}
this.setFilename(args[0]);
}
public static void main(String[] args) {
AddText me = new AddText(args);
me.run();
}
}
* 実行結果 [#d597225f]
コンパイルして実行します。~
本プログラムは、出力するファイルを引数として渡す必要があります。
+ コンパイル
$ javac AddText.java
#br
+ 引数なしで実行した場合、使い方(Usage)が表示されます。
$ java AddText
Usage: java AddText <add filename>
#br
+ 出力ファイルをadd.txtとして実行します。
+ファイルがないことを確認。
$ ls -l add.txt
ls: 'add.txt' にアクセスできません: No such file or directory
#br
+ 文字を入力しファイルに出力されていることを確認。
$ java AddText add.txt
> 1
> 2
> 3
> .
$ cat add.txt
1
2
3
#br
+再実行しファイルに追記されていることを確認。
$ java AddText add.txt
> 111
> 222
> 333
> .
$ cat add.txt
1
2
3
111
222
333
追記されているのが確認できます。
以上、Javaでファイルにテキストを追記するサンプルソースでした。