jsenter

2005年3月31日 #

JAVA的IO学习全面讲解。

IO两大主流,16位和8位
16位对应Writer 和 Reader
根据编程目的不同有
FileWriter和FileWriter        对文件进行读写。
StringWriter、StringReader    对内存里的位置进行读写。
PipedWrier、PipedReader       两个线程间通讯用

 8位对应InputStream 和 OutputStream
根据编程目的不同有
FileInputStream、FileOutputStream            对文件进行读写
ByteArrayInputStream、ByteArrayOutputStream  对字节数组进行读写
PipedInputStream、PipedOutputStream          线程间通讯用
注意:在数据流里不存在字符串的IO操作,那样就要用Reader和Writer类

二者的桥梁在InputStreamReader、OutputStreamWriter

BufferedWriter、BufferedReader、BufferedInputStream、BufferedOutputStream

是用来提高IO速度的,注意包装的时候最好最先包装Buffered,这样效果会好些。

包装模式的理解。Package Pattern

各种Data Type的长度的记忆.
还要注意对象流的使用.

高级IO操作:
信道IO,java.nio.channels包
他的主要特征是可以对内存进行快读写操作,进行内存映射.
同时可以创建各种数据类型的缓冲区,从而提高IO操作效率.

posted @ 2005-04-24 03:56 李贝 阅读(849) | 评论 (0)编辑 收藏

JAVA授权事件模型讲解(原创)

JAVA的授权事件模型包含三个概念:事件源,事件,事件监听器。

一,事件源:一个产生事件的对象。当这个对象的内部状态改变时,事件就会产生。一个事件源必须注册一个事件监听器已使监听器能够可以接受一个特定时间的通知。每一种事件都有它特定的注册方法,通用形式为:addTypeListener(TypeListener e)

二,事件:一个事件是描述了一个事件源的状态改变的对象。他可能通过一个人与图形用户接口的交互产生。如输入文字,点击鼠标。也可能不是由这些产生,如:一个事件可能在定时器中到期而产生。当然用户也可以自由的定义自己的事件。

注意:其中的Type可以是Key, Mouse,等。一个事件源可能允许注册多个事件监听器,也可能只允许注册一个监听器。

事件源也允许注销一个事件监听器,通用方法为:removeTypeListener(TypeListener e);

三,事件监听器:一个当事件发生时的时候被通知的对象。它有两个要求:
1,它必须在事件源中注册。
2,它必须实现接受和处理事件通知的方法。

还是来个比喻吧:你要想成为一个可以接受事件并处理事件的对象(即事件监听器),必须继承TypeListener类,其中的Type为事件类型。然后去注册你想监听的对象,并自己实现处理事件发生的方法,然后你就坐在等待事件的发生啦,哈哈!


附源程序研究用:
/*===============DemoEvent.java清单=============*/
import java.awt.*;
import java.awt.event.*;
import java.applet.*;


public class DemoEvent extends Applet implements MouseListener, MouseMotionListener{
    public String msg = "";
    public int mouseX = 0, mouseY = 0;
    
    /*
    *注册事件监听器
    */
    public void init() {
        addMouseListener(this);
        addMouseMotionListener(this);
    }

    /*
    *下面为所有处理MouseEvent的方法,当然你可以自定义自己的方法,但不能少了这些。
    */
    public void mouseMoved(MouseEvent me) {
        showStatus("mouse moved at :"+me.getX() +"," + me.getY());    
    }
    public void mouseReleased(MouseEvent me) {
        mouseX = me.getX();
        mouseY = me.getY();
        msg = "UP";
        repaint();    
    }
    public void mouseClicked(MouseEvent me) {
        mouseX = 0;
        mouseY = 10;
        msg = "Mouse clicked!";
        repaint();
    }
    public void mouseEntered(MouseEvent me) {
        mouseX = 0;
        mouseY = 10;    ;
        msg = "Mouse Entered!";
        repaint();
    }
    public void mouseExited(MouseEvent me) {
        mouseX = 0;
        mouseY = 0;
        msg = "Mouse Exited!";
        repaint();
    }
    public void mouseDragged(MouseEvent me) {
        mouseX = me.getX();
        mouseY = me.getY();
        msg = "*";
        repaint();    
    }
    public void mousePressed(MouseEvent me) {
        mouseX = me.getX();
        mouseY = me.getY();
        msg = "Down";
        repaint();
    }
    /*===================方法说明结束==================*/    
    public void paint(Graphics g) {
        g.drawString(msg, mouseX, mouseY);
    }
}
/*
*相关说明:这里的DemoEvent既是事件源也是事件监听器。
*
*/
/*===================DemoEvent.java清单===================*/

posted @ 2005-03-31 22:44 李贝 阅读(1353) | 评论 (4)编辑 收藏