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操作效率.
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清單===================*/