11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
プログラミング第5回 1 while ループ 文字列の操作
第11回Javaゼミ 11.1 ファイルとディレクト リ 11.2 文字ストリーム 11.3 バッファ付き文字スト リーム 2006/06/28 神津 健太.
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
JavaScript プログラミング入門 2006/11/10 神津.
IO - 入出力 小西 亨.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
~手続き指向からオブジェクト指向へ(Ⅰ)~
プログラミング基礎I(再) 山元進.
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
第13回 プログラミングⅡ 第13回
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
独習Java ・ 12.1  インターネットアドレス ・ 12.2  サーバーソケットとソケット  12月 19日    小笠原 一恵.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
第20章 Flyweight ~同じものを共有して無駄をなくす~
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
オブジェクト指向入門.
第12回独習Javaゼミ 12章セクション3~4 発表者 直江 宗紀.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
情報処理技法 (Javaプログラミング)2 第2回 前期の復習(2)
JAVA入門② 変数と型 式と演算子 制御文.
8.1 例外処理 8.2 catchブロックの検索 8.3 throwステートメント 8.4 例外とエラークラス 8.6 独自の例外
JAVA入門.
プログラミング 2 ファイル処理.
JAVA入門後期⑩ 情報処理試験例題解説.
UDPマルチキャストチャット                    空川幸司.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
例外処理 と ファイル入出力 情報システム学科 平塚 聖敏.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
安全なモバイルエージェント システム Flyingware のための 仮想ディスクの実現
リファレンスの復習と例外処理 2005年6月14日 海谷 治彦.
暗号技術 ~JAVAプログラム③~ (7週目)
第3回 2007年4月27日 応用Java (Java/XML).
アルゴリズムとプログラミング (Algorithms and Programming)
暗号技術 ~JAVAプログラム①~ (5週目)
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
独習Javaゼミ第10回 セクション1~3 発表者 直江 宗紀.
ソフトウェア制作論 平成30年11月21日.
第4回 ファイル入出力方法.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
プログラミング演習I 2003年7月2日(第11回) 木村巌.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとプログラミング (Algorithms and Programming)
暗号技術 ~JAVAプログラム②~ (6週目)
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
ソフトウェア制作論 平成30年11月14日.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス Javaゼミ第11回目 11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス 発表日 6月28日   発表者 加藤 友宏

ランダムアクセスファイル ストリームクラスでは、順次アクセスでファイル内のデータを読み書きのみ。 RandomAccessFileクラスは、ファイルのどの位置でもシークでき、その位置でデータの読み書きが可能。  例えば、ファイルに格納されているデータレコードセットを管理するのに使う。

ランダムアクセスファイル RandomAccessFileクラスのコンストラクタ (1) RandomAccessFile(File file, String mode) (2) RandomAccessFile(String name, String mode) (1) fileを読み込み元として、また場合によっては書き込み先として、ランダムアクセスファイルストリームを作成する。 (2) nameを持つファイルからの読み込み、およびオプションで書き込みを行うランダムアクセスファイルストリームを作成する 。 modeは、アクセスモードの指定。以下の4種類がある。

ランダムアクセスファイル RandomAccessFileは、DataInputインターフェイスとDataOutputインターフェイスを実装

ランダムアクセスファイル RandomAccessFileクラスに定義されている主なインスタンスメソッドの続き ファイルのどの位置にもランダムにアクセスできる → seek()が重要

ランダムアクセスファイルの例 ファイルの最後から指定した個数のバイトを表示するプログラム import java.io.*; class Tail { public static void main(String args[]) { try { // RandomAccessFileオブジェクトを //作成する RandomAccessFile raf = new RandomAccessFile(args[0], "r"); // ファイルの終わりに表示する // バイト数を決める long count = Long.valueOf(args[1]).longValue(); // ファイルの長さを決める long position = raf.length(); // 現在の位置にシークする position -= count; if (position < 0) position = 0; raf.seek(position); // バイトを読み取って、表示する while(true) { // バイトを読み取る try { byte b = raf.readByte();

ランダムアクセスファイルの例 実行結果 作成したプログラムの 最後40バイトを指定。 // 文字として表示する System.out.print((char)b); } catch (EOFException eofe) { break; catch (Exception e) { e.printStackTrace(); 実行結果 作成したプログラムの 最後40バイトを指定。 e.printStackTrace(); }

StreamTokenizerクラス StreamTokenizerクラスは、文字入力ストリームからデータを解析して、トークンの列を生成。 パーサ、コンパイラ、文字入力を処理するプログラムで重要な機能 数字または単語を表す文字のグループ

StreamTokenizerクラス StreamTokenizerクラスのコンストラクタ 4つ定数が定義されている StreamTokenizer(Reader r) rはReaderオブジェクト TT_EOF     ファイルの終わり TT_EOL     行の終わり TT_NUMBER  数字を読み取ったこと TT_WORD    単語を読み取ったこと

StreamTokenizerクラス 3つのインスタンス変数に、重要な情報がある トークンが数字     →nvalに値、ttypeにTT_NUMBER トークンが文字列     →svalに値、ttypeにTT_WORD トークンが数字、文字列以外     → ttypeに読み取った文字

StreamTokenizerクラス StreamTokenizerクラスに定義されているインスタンスメソッド

StreamTokenizerクラス StreamTokenizerクラスに定義されているインスタンスメソッドの続き

StreamTokenizerを 使用する手順 ReaderのStreamTokenizerオブジェクトを作成 文字を処理する方法を定義 nextToken()を呼び出し次のトークンを取得 ttypeインスタンス変数を読み取り、トークンの方を判断 sval、nval、ttypeのいずれかのインスタンス変数からトークンの値を読み取る トークンを処理 nextToken()がStreamTokenizer.TT_EOFを返すまでステップ3~6を繰り返す

StreamTokenizerクラスの例 テキストファイルを読み取って、その内容を解析するプログラム import java.io.*; class StreamTokenizerDemo { public static void main(String args[]) { try { // FileReaderオブジェクトを作成 FileReader fr = new FileReader(args[0]); // BufferedReaderオブジェクトを作成 BufferedReader br = new BufferedReader(fr); // StreamTokenizerオブジェクトを作成 StreamTokenizer st = new StreamTokenizer(br); // ピリオドを通常文字として定義する st.ordinaryChar('.'); // アポストロフを単語文字として定義する st.wordChars('\'', '\''); // トークンを処理する while(st.nextToken() != StreamTokenizer.TT_EOF) { switch(st.ttype) { case StreamTokenizer.TT_WORD: System.out.println(st.lineno() + ") " + st.sval); break;

StreamTokenizerクラスの例 case StreamTokenizer.TT_NUMBER: System.out.println(st.lineno() + ") " + st.nval); break; default: (char)st.ttype); } // FileReaderオブジェクトをクローズする fr.close(); catch (Exception e) { System.out.println("Exception: " + e); }

StreamTokenizerクラスの例 実行結果 指定したテキストファイルの中身 ファイル名:tokens.txt The price is $23.45 Is that too expensive? (I don't think so) 1) The 1) price 1) is 1) $ 1) 23.45 2) Is 2) that 2) too 2) expensive 2) ? 3) ( 3) I 3) don't 3) think 3) so 3) )

練習問題1 RandomAccessFileクラスを用いて、コマンドライン引数から取得した文字列をファイルに追加していくプログラムを作成せよ。   書き込んだ後、ファイルの中身を表示すること。   なお、書き込むファイル名、書き込む内容は任意とする。   実行例   1行目 : orange   2行目 : strawberry   3行目 : apple   4行目 : banana   5行目 : avocado 作成したファイルの中身 orange strawberry apple banana avocado

練習問題2 コマンドライン引数で取得したファイル名のソースに、Java のいくつかの予約語が、どのくらいの回数使われているのかを調べるプログラムを作成せよ。   調べる予約語は、if,else,try,catch,while,switch,break,   continueの8個とする。   実行例 ifが使われた回数は、12回 elseが使われた回数は、10回 tryが使われた回数は、4回 catchが使われた回数は、4回 whileが使われた回数は、4回 switchが使われた回数は、3回 breakが使われた回数は、3回 continueが使われた回数は、3回