?? serverthread.java
字號:
import java.net.*;
import java.io.*;
import javax.swing.*;
/** 執(zhí)行訪問本地文件系統(tǒng)的服務器進程。
*/
public class ServerThread extends Thread {
/** 與當前進程所對應的服務器端Socket。
*/
private Socket socket=null;
/** 區(qū)分當前客戶的請求:加載或存儲。
*/
private int mode=0;
/**
*存貯當前對話框所對應的目錄(當前目錄)
*/
private static String path=null;
/**
* @param s 與當前進程所對應的服務器端Socket。
*/
public ServerThread(Socket s) {
socket=s;
}
public void run() {
super.run();
try{
int time=socket.getInputStream().read();
if(time==PhoneSimulator.initialAdd){
ServerThread.path= new BufferedReader(
new InputStreamReader(socket.getInputStream())).readLine();
// 得到對話框的當前目錄
}
mode=socket.getInputStream().read();//從客戶端讀出用戶的請求:讀還是存盤
}
catch(IOException e){
System.err.println(e.getMessage());
}
//System.out.println("path received: "+path);
JFileChooser fileChooser= new JFileChooser(ServerThread.path);
if(mode==PhoneSimulator.savePhoneAdd){//客戶端想存盤
fileChooser.setDialogTitle("保存地址簿");
int returnValue=fileChooser.showSaveDialog(null);
if(returnValue==JFileChooser.APPROVE_OPTION){//同意存盤
try{
ServerThread.path=fileChooser.getCurrentDirectory().getPath();
// 更新路徑
socket.getOutputStream().write(PhoneAddServer.Approved_Operation);
//向客戶端確認用戶已經(jīng)選了存盤
String inLine;
BufferedReader in=new BufferedReader(
new InputStreamReader(socket.getInputStream()));
BufferedWriter out=new BufferedWriter(
new FileWriter(fileChooser.getSelectedFile()));
while((inLine=in.readLine())!=null){
System.out.println(inLine);
out.write(inLine);
out.newLine();
}
out.flush();
out.close();
in.close();
socket.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
else{//用戶選了cancel拒絕存盤
try{
socket.getOutputStream().write(PhoneAddServer.Cancel_Operation);
}
catch(IOException e){
System.err.println(e.getMessage());
}
}
}
else{//用戶想讀盤
fileChooser.setDialogTitle("加載地址簿");
int returnValue=fileChooser.showOpenDialog(null);
if(returnValue==JFileChooser.APPROVE_OPTION){//同意讀盤
try{
ServerThread.path=fileChooser.getCurrentDirectory().getPath();
// 更新路徑
socket.getOutputStream().write(PhoneAddServer.Approved_Operation);
//向客戶端確認用戶已經(jīng)選了讀盤
String inLine;
BufferedReader in=new BufferedReader(
new FileReader(fileChooser.getSelectedFile()));//從文件中讀出來
BufferedWriter out=new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));//寫入客戶端
while((inLine=in.readLine())!=null){
System.out.println(inLine);
out.write(inLine);
out.newLine();
}
out.flush();
out.close();
in.close();
socket.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
else{//用戶選了cancel拒絕讀盤
try{
socket.getOutputStream().write(PhoneAddServer.Cancel_Operation);
}
catch(IOException e){
System.err.println(e.getMessage());
}
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -