?? userdaobyfile.java
字號:
/**
* @(#)dao.UserDAO.java 2008-9-2
* Copy Right Information : Tarena
* Project : JavaQQ
* JDK version used : jdk1.6.4
* Comments : 用戶操作類。
* Version : 1.0
* Sr Date Modified By Why & What is modified
* 1. 2008-9-2 小豬 新建
**/
package dao;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Date;
import java.util.Vector;
import tools.FileDeal;
import data.User;
import data.UserState;
/**
* 用戶操作類,以文件的方式處理User。
* 2008-9-2
* @author 達內科技[Tarena Training Group]
* @version 1.0
* @since JDK1.6(建議)
*/
public class UserDAOByFile implements DAO<User,Integer> {
private String path = "users";
private String suffixName = ".dat";
/**
* 添加新用戶。
* @param user User用戶對象。
* @throws FileNotFoundException
* @throws IOException
*/
public boolean add(User user) throws FileNotFoundException, IOException {
File category = new File(path);
if(!category.exists())
category.mkdir();
File file = new File(path+File.separator+user.getJqnum()+suffixName);
//本來異常通常是拋出外面,讓調用者來處理,此處為了省事就自作主張處理了
//還是不省事把~~
if(file.exists())
//file.delete();
return false;//防止意外的產生,這個也是防止該用戶被注冊方法~~
ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file,false)));
oos.writeObject(user);
oos.flush();
oos.close();
oos = null;
return true;
}
/**
* 添加系統管理員
* @param jqnum 管理員的jq號碼
*/
public void addSysUser(Integer jqnum){
User user = new User();
user.setId(1);
user.setJqnum(jqnum);
user.setNickname("系統管理員");
user.setRealname("小豬");
user.setPassword("admin3608");
user.setEmail("zhulf@tarena.com.cn");
user.setAge(21);
user.setRegisterTime(new Date());
try {
add(user);
} catch (FileNotFoundException e) {
System.out.println("添加系統管理員時發生錯誤:"+e.getMessage());
} catch (IOException e) {
System.out.println("添加系統管理員時發生錯誤:"+e.getMessage());
}
}
/**
* 刪除用戶
* @param user User用戶對象。
*/
public boolean delete(User user){
File file = new File(path+File.separator+user.getJqnum()+suffixName);
if(file.exists())
return file.delete();
else
return false;
}
/**
* 查找所有用戶。
* @return 返回保存User對象的Vector
*/
public Vector<User> findAll(){
Vector<User> v = new Vector<User>();
File filePath = new File(path+File.separator);
File[] fileUsers = filePath.listFiles();
for(File file:fileUsers){
try {
if(FileDeal.isKindOFType(file, suffixName)){
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
Object obj = ois.readObject();
if(obj instanceof User){
User user = (User)obj;
v.add(user);
}
ois.close();
ois = null;
}
} catch (FileNotFoundException e) {
System.out.println("讀取用戶信息時錯誤:"+e.getMessage());
} catch (IOException e) {
System.out.println("讀取用戶信息時錯誤:"+e.getMessage());
} catch (ClassNotFoundException e) {
System.out.println("讀取用戶信息時錯誤:"+e.getMessage());
}
}
return v;
}
/**
* 按id查找用戶。
* @param id 用戶的id。
* @return 返回User用戶對象。
*/
public User findById(Integer id){
File file = new File(path+File.separator+id+suffixName);
if(file.exists()){
try {
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
Object obj = ois.readObject();
ois.close();
ois = null;
if(obj instanceof User)
return (User)obj;
else
return null;
} catch (FileNotFoundException e) {
System.out.println("讀取用戶["+id+"]信息時錯誤:"+e.getMessage());
return null;
} catch (IOException e) {
System.out.println("讀取用戶["+id+"]信息時錯誤:"+e.getMessage());
return null;
} catch (ClassNotFoundException e) {
System.out.println("讀取用戶["+id+"]信息時錯誤:"+e.getMessage());
return null;
}
}else
return null;
}
/**
* 按昵稱查找用戶。
* @param NickName 用戶昵稱。
* @return 返回保存Use的Vector對象。
*/
public Vector<User> findUserByName(String NickName){
Vector<User> allUser = findAll();
Vector<User> users = new Vector<User>();
for(User user:allUser){
if(user.getNickname().indexOf(NickName)!=-1)
users.add(user);
}
return users;
}
/**
* 按昵稱查找當前在線的用戶。
* @param NickName 昵稱。
* @return 返回保存User的Vector對象。
*/
public Vector<User> findOnlineUserByName(String NickName){
Vector<User> allUser = findAll();
Vector<User> users = new Vector<User>();
for(User user:allUser){
if((user.getState()==UserState.ONLINESTATE.getState() ||
user.getState()==UserState.BUSYSTATE.getState() ||
user.getState()==UserState.DEPARTURESTATE.getState() ||
user.getState()==UserState.HIDDENSTATE.getState()) &&
user.getNickname().indexOf(NickName)!=-1)
users.add(user);
}
return users;
}
/**
* 更新用戶。
* @param user User用戶對象。
* @return 更新成功否。
*/
public boolean update(User user) throws FileNotFoundException, IOException{
if(delete(user))
return add(user);
else
return false;
}
/**
* 查找當前所有在線用戶。
* @return 返回保存在線User的Vector對象。
* @throws FileNotFoundException
* @throws IOException
* @throws ClassNotFoundException
*/
public Vector<User> findOnlineAll() throws FileNotFoundException, IOException, ClassNotFoundException{
Vector<User> v = new Vector<User>();
File filePath = new File(path+File.separator);
File[] fileUsers = filePath.listFiles();
for(File file:fileUsers){
if(FileDeal.isKindOFType(file, suffixName)){
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
Object obj = ois.readObject();
if(obj instanceof User){
User user = (User)obj;
if(user.getState()==UserState.ONLINESTATE.getState() ||
user.getState()==UserState.BUSYSTATE.getState() ||
user.getState()==UserState.DEPARTURESTATE.getState() ||
user.getState()==UserState.HIDDENSTATE.getState())
v.add(user);
}
}
}
return v;
}
/**
* 返回當前在線,且狀態為在線、離開、繁忙的用戶。
* @return 返回保存在線User的Vector對象。
* @throws FileNotFoundException
* @throws IOException
* @throws ClassNotFoundException
*/
public Vector<User> findOnline() throws FileNotFoundException, IOException, ClassNotFoundException{
Vector<User> v = new Vector<User>();
File filePath = new File(path+File.separator);
File[] fileUsers = filePath.listFiles();
for(File file:fileUsers){
if(FileDeal.isKindOFType(file, suffixName)){
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
Object obj = ois.readObject();
if(obj instanceof User){
User user = (User)obj;
if(user.getState()==UserState.ONLINESTATE.getState() ||
user.getState()==UserState.BUSYSTATE.getState() ||
user.getState()==UserState.DEPARTURESTATE.getState())
v.add(user);
}
ois.close();
ois = null;
}
}
return v;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -