Client-Server發送文件時對話框選擇目錄功能

若要實現客戶端向服務器端發送文件的功能,客戶端須有選擇文件的按鈕,服務器端須有選擇儲存目錄、打開目錄的按鈕,解一下這兩種做法。

首先客戶端:三條語句即可

 

FileDialog filedialog = new FileDialog(new Frame(), "打開文件對話框",FileDialog.LOAD);

filedialog.setVisible(true);

filePathFiled.setText(filedialog.getDirectory()+ filedialog.getFile());//將路徑填入選擇文件的路徑文本框

 

FileDialog (Frame parent, String title, int mode)
創建一個具有指定標題的文件對話框窗口,用於加載或保存文件。

getDirectory()+getFile() = 文件路徑

public class FileDialog extends Dialog
FileDialog 類顯示出一個對話框窗口,用戶可以從中選擇文件。
因爲它是一個模式對話框,當應用調用它的 show 方法來顯示對話框時,它會阻塞應用的其餘部分直到用戶選擇了一個文件。

 

變量索引
LOAD 該常量值表明文件對話框窗口的用途是確定從哪裏讀取文件。
SAVE 該常量值表明文件對話框窗口的用途是確定向哪裏寫入文件。

構造子索引
FileDialog(Frame) 創建一個讀取文件的文件對話框。
FileDialog(Frame, String) 以指定的標題創建一個讀取文件的文件對話框窗口。
FileDialog(Frame, String, int) 以指定的標題創建一個讀取或保存文件的文件對話框窗口。

如果 mode 值是 LOAD ,那麼文件對話框將找到文件來讀取。 如果mode 值是SAVE ,那麼文件對話框將找到位置來寫入文件。
參數: parent - 對話框的擁有者。title - 對話框的標題。mode - 對話框的模式。

方法索引
addNotify() 創建文件對話框的同級件。
getDirectory() 獲取該文件對話框的目錄。
getFile() 獲取該文件對話框所選中的文件。
getFilenameFilter() 確定該文件對話框的文件名過濾器。
getMode() 表示該文件對話框是用於讀取文件或是用於保存文件。
paramString() 返回表示該文件對話框窗口的狀態的參數字符串。
setDirectory(String) 將該文件對話框窗口的目錄設置爲指定的目錄。
setFile(String) 將該文件對話框窗口的選定文件設置爲指定的文件。
setFilenameFilter(FilenameFilter) 將該文件對話框窗口的文件名過濾器設置爲指定的過濾器。
setMode(int) 設置文件對話框的模式。

如下:
public static final int LOAD 該常量值表明文件對話框窗口的用途是確定從哪裏讀取文件。
public static final int SAVE 該常量值表示文件對話框窗口的用途是確定向哪裏寫入文件。

具體事件處理

chooseButton = new JButton("\u9009\u62E9\u6587\u4EF6");
chooseButton.addActionListener(new ActionListener() {//採用匿名內部類方式,簡潔便於管理
public void actionPerformed(ActionEvent e) {
FileDialog filedialog = new FileDialog(new Frame(), "打開文件對話框",
FileDialog.LOAD);
filedialog.setVisible(true);
filePathFiled.setText(filedialog.getDirectory()+ filedialog.getFile());
}
});
chooseButton.setBounds(284, 34, 93, 23);
contentPane.add(chooseButton);

服務器端:

選擇目錄

setSelectedFile(),返回選中的文件

JFileChooser jfc = new JFileChooser();創建一個文件選擇器對象

jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

該對象設置爲只選擇目錄

該對象調用showOpenDialog(null)會彈出對話框

選完之後,getSelectedFile()返回選中的文件

獲得被選擇文件的路徑String path = jfc.getSelectedFile().getAbsolutePath();

顯示到路徑文本框this.savePath.setText(path);

 打開目錄

Desktop d = Desktop.getDesktop();

d.open(new File(this.savePath.getText()));

參數爲文件對象,若是目錄,則啓動文件管理器打開。

// 四個按鈕的單擊事件
public void actionPerformed(ActionEvent e) {
if (e.getSource() == selectButton) {
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//設置爲只選擇目錄
int res = jfc.showOpenDialog(null);//彈出文件選擇器對話框
if (res == JFileChooser.APPROVE_OPTION) {//若對話框等於選擇確認後的返回值
String path = jfc.getSelectedFile().getAbsolutePath();//獲得被選擇文件的路徑
this.savePath.setText(path);
}
} else if (e.getSource() == open) {
Desktop d = Desktop.getDesktop();
try {
d.open(new File(this.savePath.getText()));//參數爲文件,若該文件是目錄,則啓動文件管理器打開
} catch (IOException e1) {
e1.printStackTrace();
}


} else if (e.getSource() == cleanButton) {
this.textArea.setText("");
} else {
set.sendToAll(textArea.getText() + "\n");//set對象完成向數組中的各個socket傳遞消息。
JOptionPane.showMessageDialog(null, "發送成功!");
}
}
}

以上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章