第 15 回: ファイル読み込み, 書き込み, Applet, GUI, Javascript, Ajax

ファイル読み込み

ShowFile1.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*;

public class ShowFile1{
    public static void main(String[] args){
	if(args.length != 1){
	    System.out.println("使用法: java ShowFile1 ファイル");
	    System.out.println("例: java showFile1 ShowFile1.java");
	    System.exit(0);
	}
	String filename = args[0];
	try{
	    BufferedReader reader = new BufferedReader(new FileReader(filename));
	    String line;
	    while( (line = reader.readLine()) != null ){
		System.out.println(line);
	    }
	    reader.close();
	}catch(FileNotFoundException e){
	    System.out.println(filename + "が見つからない");
	}catch(IOException e){
	    System.out.println(e);
	}
    }
}

ShowFile1.java の実行結果は:

[wtopia koji]$ java ShowFile1
使用法: java ShowFile1 ファイル
例: java showFile1 ShowFile1.java
[wtopia koji]$ java ShowFile1 HelloWorld.java
public class HelloWorld{
    public static void main(String[] args) throws Exception{
        System.out.println("Hello, Java World 1!");

        System.out.print("Hello, Java World 2!");
        System.out.println();
    }
}

ファイル書き込み

WriteFile1.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*;

public class WriteFile1{
    public static void main(String[] args){
	if(args.length != 1){
	    System.out.println("使用法: java WriteFile1 作成ファイル");
	    System.out.println("例: java WriteFile1 output.txt < input.txt");
	    System.exit(0);
	}
	String filename = args[0];
	try{
	    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
	    PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
	    String line;
	    while ( (line = reader.readLine()) != null ){
		writer.println(line);
	    }
	    reader.close();
	    writer.close();
	}catch(IOException e){
	    System.out.println(e);
	}
    }
}

WriteFile1.java の実行結果は:

[wtopia koji]$ java WriteFile1
使用法: java WriteFile1 作成ファイル
例: java WriteFile1 output.txt < input.txt
[wtopia koji]$ java WriteFile1 koji_out.txt
1. a
2. b
3. c
4. d
[wtopia koji]$ java ShowFile1 koji_out.txt
1. a
2. b
3. c
4. d

Applet

HelloApplet.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// 円軌道を運動するボールの軌跡
import java.applet.* ;
import java.awt.* ;

public class HelloApplet extends Applet implements Runnable{
    int t = 0; // 角度 (deg.)
    double hankei = 150; // 軌道の半径
    Thread th = null;

    public void start(){
	th = new Thread(this);
	th.start();
    }

    public void run() {
	while( th != null ){
	    repaint();
	    t = (t + 5) % 360;
	    try{
		th.sleep(5); // 5ms = 0.005 秒停止
	    }
	    catch (InterruptedException e){
	    }
	}
    }
  
    public void paint(Graphics g){
	double a;
	int x, y;
	g.setColor(Color.white);
	g.fillRect(10, 10, 380, 380) ;
	a = (double)t*Math.PI / 180.0;
	x = (int)( hankei * Math.cos(a) );
	y = (int)( hankei * Math.sin(a) );
	g.setColor(Color.red);
	g.fillOval( x+200-10, -y+200-10, 21, 21 );
    }
}

HelloApplet.java の実行結果は:

[wtopia koji]$ javac HelloApplet.java
[wtopia koji]$ appletviewer HelloApplet.html
_images/applet_circle.png

Firefox を使って applet を実行できる.

_images/firefox_applet.png

GUI

java には, GUI 用のライブラリが用意されている:

1. AWT
2. SWING

以下は, SWING のウィンドウを出すための JFrame です.

MyWindow.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import java.awt.*;
import javax.swing.*;

public class MyWindow extends JFrame{
    public MyWindow(){
	setSize(300, 200);
	setTitle("MyWindow");
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setVisible(true);
    }

    public static void main(String[] args){
	new MyWindow();
    }
}
_images/mywindow.png

ボタンをつくる JButton

MyButton.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class MyButton extends JFrame implements ActionListener{
    MyButton(){
	getContentPane().setLayout(new FlowLayout());
	JButton b = new JButton("OK");
	b.addActionListener(this);
	getContentPane().add(b);

	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setTitle("MyButton");
	setSize(300, 200);
	setVisible(true);
    }
    public void actionPerformed(ActionEvent e){
	System.out.println("OK");
    }
    public static void main(String[] args){
	new MyButton();
    }
}
_images/mybutton.png

Javascript

1. Netscape 社の開発した HTML 内に埋め込めるオブジェクト指向スクリプト言語
2. オブジェクト指向が取り入れられた手続き型言語
3. JavaScript を使用により, 簡易なテキストベースでダイナミックなページが作成可能
4. Java とは直接の互換性はない.

Ajax (Asynchronous JavaScript and XML)

Web ブラウザに実装されている JavaScript の HTTP 通信機能 (XMLHttpRequest) を使って, Web ページのリロードを伴わずサーバと XML 形式のデータのやり取りを行って処理を進めていく対話型 Web アプリケーションの実装状態.