喫茶店。貴奈(きな)
http://www.kina-roppongi.com/
サンドイッチのセット。1050円。
店内が広い。天井が高い。ランプがいろいろある。
なかなか、雰囲気がよい。
また、ウェイターも親切。
http://www.kina-roppongi.com/
サンドイッチのセット。1050円。
店内が広い。天井が高い。ランプがいろいろある。
なかなか、雰囲気がよい。
また、ウェイターも親切。
◆ Lego Mindstoms NXT - leJOS - (17) ファイル入出力 ================================================================ ファイル入出力を行います。 今回は、光センサーの調整を行い、このデータをファイルに格納してお きます。 そのファイルに格納した値を入力することで、プログラムを起動するた びに光センサーの調整を行う必要がなくなります。 ■ファイル出力 光センサーからreadNormalizedValue()メソッドを使って、暗いときの 値と明るいときの値をファイルに保存します。 --- import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import lejos.nxt.Button; import lejos.nxt.LightSensor; import lejos.nxt.SensorPort; /** * 「トライボット」使用 * 光センサーの最小値と最大値をint型でファイルに保存する。 * * @author marunomaruno * @version 1.0, 2010/03/15 * @since 1.0 */ public class Calibrator02 { public static void main(String[] args) throws Exception { // 光センサーオブジェクトをポート3で生成する。 LightSensor lightSensor = new LightSensor(SensorPort.S3); // ファイルを作成する。 File file = new File("light.dat"); // (1) file.delete(); // (2) file.createNewFile(); // (3) DataOutputStream out = new DataOutputStream( new FileOutputStream(file)); // (4) // 最小値を設定する。 System.out.println("Press Button if dark."); Button.waitForPress(); int lowValue = lightSensor.readNormalizedValue(); lightSensor.setLow(lowValue); System.out.println(lowValue + " " + lightSensor.readValue()); out.writeInt(lowValue); // (5) // 最大値を設定する。 System.out.println("Press Button if bright."); Button.waitForPress(); int highValue = lightSensor.readNormalizedValue(); lightSensor.setHigh(highValue); System.out.println(highValue + " " + lightSensor.readValue()); out.writeInt(highValue); // ファイルを閉じる out.close(); // (6) } } --- □ File file = new File("light.dat"); // (1) ファイル名を指定して、Fileオブジェクトを生成します。 Fileクラスのコンストラクタ --- File(String name) --- Fileクラスの主なメソッド --- boolean createNewFile() boolean delete() boolean exists() static int freeMemory() String getName() long length() static File[] listFiles() void moveToTop() static void reset() boolean setReadOnly() --- □ file.delete(); // (2) □ file.createNewFile(); // (3) 新規にファイルを生成したいので、一度、指定されたファイルを削除 (delete)してから、新規に作成(createNewFile)しなおします。 leJOSの場合は、一度削除してからでないと、同じファイル名の場合、 不具合が起きる場合があります。 □ DataOutputStream out = new DataOutputStream( new FileOutputStream(file)); // (4) DataOutputStreamオブジェクトを指定したファイルを基に作ります。 このクラスを使うと、プリミティブ型の Java データを移植性のある形 で出力ストリームに書き込むことができます。 DataOutputStreamクラスの主なコンストラクタ --- DataOutputStream(OutputStream out) --- DataOutputStreamクラスは、フィルタークラスとして、OutputStreamオ ブジェクトをその生成時に指定します。ここでは、コンストラクターの 引数として、FileOutputStreamオブジェクトを指定しています。 DataOutputStreamクラスの主なメソッド --- void close() void flush() int size() void write(byte[] b, int off, int len) void write(int b) void writeBoolean(boolean v) void writeByte(int v) void writeChar(int v) void writeFloat(float v) void writeInt(int v) void writeShort(int v) --- FileOutputStreamクラスの主なコンストラクタ --- FileOutputStream(File f) FileOutputStream(File f, boolean append) --- □ out.writeInt(lowValue); // (5) int 型データを、上位バイトを先頭とする 4 バイトデータ(ビックエン ディアン)として基本となる出力ストリームに書き込みます。 □ out.close(); // (6) 出力ストリームを閉じ、これに関連するすべてのシステムリソースを解 放します。 ■ファイル入力 ファイルから光センサーの最小値と最大値を取得して、センサーを調整 します。 --- import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import lejos.nxt.Button; import lejos.nxt.LightSensor; import lejos.nxt.SensorPort; /** * 「トライボット」使用 * 光センサーの最小値と最大値をファイルから読み取り、調整する。 * * @author marunomaruno * @version 1.0, 2010/03/15 * @since 1.0 */ public class Calibrator03 { public static void main(String[] args) throws Exception { // 光センサーオブジェクトをポート3で生成する。 LightSensor lightSensor = new LightSensor(SensorPort.S3); // ファイルを作成する。 File file = new File("light.dat"); DataInputStream in = new DataInputStream( new FileInputStream(file)); // (1) // 最小値を設定する。 int lowValue = in.readInt(); // (2) lightSensor.setLow(lowValue); System.out.println(lowValue); // 最大値を設定する。 int highValue = in.readInt(); lightSensor.setHigh(highValue); System.out.println(highValue); // ファイルを閉じる in.close(); // (3) // 終了メッセージ System.out.println("Press button for exit program."); Button.waitForPress(); } } --- □ DataInputStream in = new DataInputStream( new FileInputStream(file)); // (1) データ入力ストリームにより、アプリケーションは、プリミティブ型の Java データを基本となる入力ストリームからマシンに依存せずに読み 込むことができます。 DataInputStreamクラスの主なコンストラクタ --- DataInputStream(InputStream in) --- DataInputStreamクラスは、フィルタークラスとして、InputStreamオブ ジェクトをその生成時に指定します。ここでは、コンストラクターの引 数として、FileInputStreamオブジェクトを指定しています。 DataInputStreamクラスの主なメソッド --- void close() boolean readBoolean() byte readByte() char readChar() double readDouble() float readFloat() void readFully(byte[] b) void readFully(byte[] b, int off, int len) int readInt() long readLong() short readShort() int readUnsignedByte() int readUnsignedShort() String readUTF() int skipBytes(int n) --- FileInputStreamクラスの主なコンストラクタ --- FileInputStream(File f) --- □ int lowValue = in.readInt(); // (2) 4 バイトの入力データを読み込んで、int 値を返します。 □ in.close(); // (3) 入力ストリームを閉じ、これに関連するすべてのシステムリソースを解 放します。 以上