Java 文件上传:使用 JFileChooser 弹出选择文件对话框
可以使用 Java Swing 提供的 JFileChooser 类来弹出选择文件位置对话框。具体实现如下:
- 导入 Java Swing 相关的包:
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
- 修改代码中的文件路径为选择的文件路径:
// 原代码
File file = new File('E:\理论实训.pptx');
// 修改后的代码
JFileChooser fileChooser = new JFileChooser();
// 设置文件选择框的默认路径
fileChooser.setCurrentDirectory(new File(System.getProperty('user.home')));
// 设置文件类型过滤器,只显示 PPTX 文件
FileNameExtensionFilter filter = new FileNameExtensionFilter('PPTX Files', 'pptx');
fileChooser.setFileFilter(filter);
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
}
- 完整代码如下:
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
public class FileTransfer {
private FileInputStream fis = null;
private DataOutputStream dos = null;
private Socket client = null;
public FileTransfer(Socket client) {
this.client = client;
}
/**
* 向服务端传输文件
* @throws Exception
*/
public void sendFile() throws Exception {
try {
JFileChooser fileChooser = new JFileChooser();
// 设置文件选择框的默认路径
fileChooser.setCurrentDirectory(new File(System.getProperty('user.home')));
// 设置文件类型过滤器,只显示 PPTX 文件
FileNameExtensionFilter filter = new FileNameExtensionFilter('PPTX Files', 'pptx');
fileChooser.setFileFilter(filter);
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if (file.exists()) {
fis = new FileInputStream(file);
dos = new DataOutputStream(client.getOutputStream());
// 文件名和长度
dos.writeUTF(file.getName());
dos.flush();
dos.writeLong(file.length());
dos.flush();
// 传输文件内容
byte[] bytes = new byte[1024];
int length = 0;
while ((length = fis.read(bytes, 0, bytes.length)) != -1) {
dos.write(bytes, 0, length);
dos.flush();
}
}
}
} finally {
if (fis != null)
fis.close();
if (dos != null)
dos.close();
}
}
}
原文地址: https://www.cveoy.top/t/topic/ocrA 著作权归作者所有。请勿转载和采集!