给java调用的actionPerformed方法中给按钮jb1添加一个可以发送文件的功能
时间: 2024-02-01 16:14:02 浏览: 88
可以通过使用JFileChooser组件和Socket编程实现在Java中发送文件的功能。以下是一个简单的示例代码,其中包括一个按钮(jb1)和一个文件选择器(fc):
```java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class FileSender extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JButton jb1;
private JFileChooser fc;
public FileSender() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 100);
JPanel panel = new JPanel();
jb1 = new JButton("Send File");
jb1.addActionListener(this);
panel.add(jb1);
add(panel);
fc = new JFileChooser();
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb1) {
int returnVal = fc.showOpenDialog(FileSender.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
try {
Socket socket = new Socket("localhost", 8000); //修改为服务器地址和端口
byte[] byteArray = new byte[(int) file.length()];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
bis.read(byteArray, 0, byteArray.length);
OutputStream os = socket.getOutputStream();
os.write(byteArray, 0, byteArray.length);
os.flush();
socket.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new FileSender();
}
}
```
在上面的代码中,当用户点击jb1按钮时,程序会弹出一个文件选择器,用户可以选择要发送的文件。然后,程序会创建一个Socket连接到指定的服务器地址和端口,并将文件内容通过该Socket发送到服务器端。请注意,此示例代码仅适用于将文件发送到本地计算机上运行的服务器。如果您需要将文件发送到远程服务器,请使用适当的主机名称和端口号。
阅读全文