アルゴリズムとデータ構造演習(7月8日) 入出力ストリーム 2019/1/18
入出力ストリーム ユーザープログラム 様々なデータ型に対応 ストリームクラス 様々なハードウェアに対応 入出力装置 2019/1/18
ストリームのクラス Reader BufferedReader CharArrayReader InputStreamReader LineNumberReader CharArrayReader InputStreamReader FileReader FilterReader PushbackReader PipedReader StringReader 2019/1/18
入出力ストリームの使用方法 try {BufferedReader in = new BufferedReader( new InputStreamReader(new FileInputStream(“Test.txt”))); String str = in.readLine(); } catch (IOException ioe) { System.err.println(e.toString());} try {BufferedWriter out = new BufferedWriter( new OutputStreamWriter(new FileOutputStream(“Test.txt”))); out.write(str); } finally { out.close(); } 2019/1/18
標準入出力(1) IOTestのコンソール出力 テスト1:標準入力からバッファに読み込み、「!」+Enterで終了する。 この後に入力してください。>Java2 入力内容:Java2 この後に入力してください。>! 入力内容:! テスト2:ファイルtest2.txtからバッファに読み込む。 ファイルの内容:JAVA2より ”おはよう!” テスト3:バッファの内容をファイルtest3.txtに書き込む。 ファイルが存在しない時、ファイルを自動的に生成する。 テスト4:ファイルtest3.txtに追加の書き込みをする。 テスト5:ランダムアクセスファイルtest4.txtを使用する。 2019/1/18
標準入出力(2) IOTestの出力ファイル test2.txt: JAVA2より ”おはよう!” test3.txt: おはようございます。Good Morning! test4.txt G O O D M O R N I N G ! G O O D M O R N I N G ! 2019/1/18
ランダムアクセス(1) try { RandomAccessFile in = new RandomAccessFile(“Test.txt”, “r”); int n = (int)(in.length() / atom.RECORD_SIZE); atom[] a = new atom[n]; for (i=0; i<n; i++) { a[i] = new atom(); in.seek(i*atom.RECORD_SIZE); a[i].readAtom(in); } for (i=0; i<atm.length; i++) { a[i].print(); } catch (IOException ioe) { System.err.println(e.toString());} 2019/1/18
ランダムアクセス(2) PeriodicLawのコンソール出力 元素名:金 英語名:Gold 記号:Au 原子記号:79 原子量:196.9 元素名:銀 英語名:Silver 記号:Ag 原子記号:47 原子量:107.8 元素名:銅 英語名:Copper 記号:Cu 原子記号:29 原子量:63.5 元素名:鉄 英語名:Iron 記号:Fe 原子記号:26 原子量:55.8 元素名:鉛 英語名:Lead 記号:Pb 原子記号:82 原子量:207.2 2019/1/18
トークナイザー(1) StringTokenizer t = new StringTokenizer(s, "|"); jname = t.nextToken(); … atomicNumber = Integer.parseInt(t.nextToken()); atomicWeight = Double.parseDouble(t.nextToken()); 2019/1/18
トークナイザー(2) PeriodicLaw1の出力ファイル atom1.txt 5 金|Gold|Au|79|196.9 銀|Silver|Ag|47|107.8 銅|Copper|Cu|29|63.5 鉄|Iron|Fe|26|55.8 鉛|Lead|Pb|82|207.2 2019/1/18