• 検索結果がありません。

Microsoft PowerPoint - OOP.pptx

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - OOP.pptx"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

第12回

第10章

ファイルの入出力処理

24 4

入出力ストリームクラス

(2)

246

ファイルの書き出し

(1) ファイルのオープン処理

FileWriter fw=new FileWriter(args[0]);

文字列args[0]で指定された名前のファイルを作成する.FileWriterというストリームクラスの

オブジェクトによりファイルがオープンされる.このオブジェクトは変数fwに格納される.

(2) データの書き出し処理

fw.write(”Data”+i+”¥n”);

FileWriterクラスのwrite()メソッドを使用して,オープンしたファイルに( )内の書式でデータを

書き込む.

(3) ファイルのクローズ処理

fw.close();

FileWriterクラスのclose()メソッドを使用してファイルを閉じる.

247

例題1 ファイルの出力処理

//例題1 FileWriterによるファイル出力 ファイル名はarg[0]で指定 import java.io.*; // 注意① public class fw1{

public static void main(String[] args){ // 注意② try{

FileWriter fw=new FileWriter(args[0]); // 注意③ // 出力ストリームを作成.arg[0]はファイル名. for(int i=0;i<12;i++){ // 文字列をファイルに書き込む. fw.write("Data "+i+"¥n"); // 注意④ } fw.close(); // 出力ストリームを閉じる. } catch(IOException e){ // 注意⑤ System.out.println("ファイルエラー."); // 注意⑥ } catch(Exception e){ // 注意⑦ System.out.println("ファイル指定がありません."); // 注意⑧ } } }

fw1.java

ファイル入出力を行うためには,

import java.io.*;

が必要.

(3)

248

例題1 ファイルの出力処理

K:¥java¥12th>javac fw1.java K:¥java¥12th>java fw1 ファイル指定がありません. K:¥java¥12th>java fw1 file1.txt K:¥java¥12th>

実行結果

Data 0 Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 Data 8 Data 9 Data 10 Data 11

file1.txt

文字列(args[0])が入力されていないので,

エラーメッセージを表示して終了

ファイルの読み込み

(1) ファイルのオープン処理

FileReader fr=new FileReader(args[0]);

文字列args[0]で指定された名前のファイルを開く.FileReaderというストリームクラスの

オブジェクトによりファイルがオープンされる.このオブジェクトは変数frに格納される.

(2) データの読み込み処理

while((c=fr.read())!=-1)

while文により繰り返しFileReaderクラスのread()メソッドを使用して,オープンしたファイルから

データを読み出し,int型変数cに格納している.読み出した結果が-1 (ファイルの終わり: EOF)

だった場合はwhileループを終了する.

(4)

250

例題2 ファイルの入力処理

//例題2 ファイル入力 ファイル名はargs[0]で指定 import java.io.*;

public class fr1{

public static void main(String[] args){ try{

// 入力ストリームを作成.ファイル名はarg[0] FileReader fr=new FileReader(args[0]); // 読み込みループ. int c; while((c=fr.read())!=-1){ System.out.print((char)c); } // 入力ストリームを閉じる. fr.close(); } catch(IOException e){ System.out.println("ファイルがありません."); } catch(Exception e){ System.out.println("ファイル指定がありません."); } } }

fr1.java

ファイル入出力を行うためには,

import java.io.*;

が必要.

読み込んだデータを文字型(char)に

キャストして表示

251

例題2 ファイルの入力処理

K:¥java¥12th>javac fr1.java K:¥java¥12th>java fr1 ファイル指定がありません. K:¥java¥12th>java fr1 file1.txt Data 0 Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 Data 8 Data 9 Data 10 Data 11 K:¥java¥12th>

実行結果

変数cには改行コード ¥n も読み込まれるため,System.out.printでも改行される.

(5)

252

例題3 ファイルの入出力処理

//例題3 ファイル入力 ファイル名はargs[0]で指定 // ファイル出力 ファイル名はargs[1]で指定 //入力ファイルを出力ファイルにコピーする //入力ファイルがなければエラー,出力ファイルの存在はチェックなし import java.io.*; public class frw1{

public static void main(String[] args){ if(args.length!=2){

System.out.println("使用法: java frw1 入力ファイル名 出力ファイル名"); System.out.println("例: java frw1 test1.txt test2.txt"); System.exit(0);

} try{

// 入力ストリームを作成,args[0]は入力ファイル名. FileReader fr=new FileReader(args[0]); // 出力ストリームを作成,args[1]は出力ファイル名. FileWriter fw=new FileWriter(args[1]); // 読み込みループ int c; while((c=fr.read())!=-1){ fw.write(c); } // 入力・出力ストリームを閉じる. fr.close(); fw.close(); } catch(IOException e){ System.out.println("ファイルエラー."); } catch(Exception e){ System.out.println("ファイル指定がありません."); } } }

frw1.java

名前args[0]のファイルからデータを

読み込み,名前args[1]のファイル

にデータを書き込む

(ファイルのコピーに対応)

例題3 ファイルの入出力処理

K:¥java¥12th>javac frw1.java K:¥java¥12th>java frw1 使用法: java frw1 入力ファイル名 出力ファイル名 例: java frw1 test1.txt test2.txt

K:¥java¥12th>java frw1 file1.txt file2.txt K:¥java¥12th>

実行結果

Data 0 Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 Data 8 Data 9 Data 10 Data 11

file2.txt

file1.txtの内容をそのまま書き込んだだけなので,file2.txtはfile1.txtと全く同じ内容となっている.

(6)

254

例題4 ファイルの削除処理

//例題4 ファイルの削除 //ファイルの指定はargs[0] import java.io.*; public class fd1{

public static void main(String[] args){ // パラメータの数をチェック

if(args.length!=1){

System.out.println("使用法: java fd1 削除ファイル名"); System.out.println("例: java fd1 file1");

System.exit(0); }

String ffname=args[0]; File file=new File(ffname); if(file.delete()){ System.out.println(ffname+"は削除しました."); } else{ System.out.println(ffname+"は削除できませんでした."); } } }

fd1.java

・ファイルを扱うためのクラスFileのオブジェクトfileを生成(ファイル名はffnameで指定)

・Fileクラスのメソッドdelete()を用いてファイルを削除

255

例題4 ファイルの削除処理

K:¥java¥12th>javac fd1.java K:¥java¥12th>java fd1 test1 test1は削除できませんでした. K:¥java¥12th>java fd1 file1 file1は削除しました. K:¥java¥12th>

実行結果

(7)

256

例題5 ファイル名の変更処理

//例題5 ファイル名の変更(ファイルの存在はチェックしていない) //ファイル名の指定はargs[0],args[1] import java.io.*; public class fn1{

public static void main(String[] args){ if(args.length!=2){

System.out.println("使用法: java fn1 現在のファイル名 新しいファイル名"); System.out.println("例: java fn1 oldfile newfile");

System.exit(0); }

String oldffname=args[0]; String newffname=args[1]; File oldf1=new File(oldffname); File newf2=new File(newffname); if(oldf1.renameTo(newf2)){ System.out.println(oldffname+"を"+newffname+"に変更しました."); } else{ System.out.println(oldffname+"を"+newffname+"に変更できませんでした."); } } }

fn1.java

・ファイルを扱うためのクラスFileのオブジェクトoldf1, newf2を生成(ファイル名はoldffname, newffnameで指定)

・FileクラスのメソッドrenameTo()を用いてファイルを削除

使用法) 元のファイルに対応するオブジェクト.renameTo(新しいファイルに対応するオブジェクト)

例題5 ファイル名の変更処理

K:¥java¥12th>javac fn1.java K:¥java¥12th>java fn1 使用法: java fn1 現在のファイル名 新しいファイル名 例: java fn1 oldfile newfile

K:¥java¥12th>java fn1 file1 file2 file1をfile2に変更しました.

K:¥java¥12th>

参照

関連したドキュメント

In this lecture, we aim at presenting a certain linear operator which is defined by means of the Hadamard product (or convolu- tion) with a generalized hypergeometric function and

The Farrell–Jones Conjecture for algebraic K –theory for the trivial family TR consisting of the trivial subgroup only is true for infinite cyclic groups and regular rings R

The Arratia, Goldstein and Gordon result essentially tells us that if the presence of one small component in a subregion of area O(log n) does not greatly increase the chance of

Tkachov; Doubly nonlocal Fisher-KPP equation: Speeds and uniqueness of traveling waves.. Tkachov; Doubly nonlocal Fisher-KPP equation:

ホーム &gt; 政策について &gt; 分野別の政策一覧 &gt; 健康・医療 &gt; 食品 &gt; 輸入食品監視業務 &gt;

ホーム &gt;政策について &gt;分野別の政策一覧 &gt;福祉・介護 &gt;介護・高齢者福祉

Joshi; Existence and nonexistence of solutions of sublinear problems with prescribed num- ber of zeros on exterior domains, Electronic Journal of Differential Equations, 2017 No..

Thus, Fujita’s result says that there are no global, nontrivial solutions of (1.3) whenever the blow up rate for y(t) is not smaller than the decay rate for w(x, t) while there are