import java.awt.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.awt.event.ActionListener;
import java.util.EventListener;
import java.awt.event.ActionEvent;
public class FileClielt implements ActionListener
{
JFrame jf = new JFrame("文件传输");
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JLabel jl = new JLabel("");
JTextArea jtxtip = new JTextArea("");
JButton jbopen = new JButton("打开");
JButton jbsave = new JButton("保存");
JButton jbsend = new JButton("发送");
JButton jbexit = new JButton("退出");
String openfile,savefile;
public void FileClielt()
{
//界面
jp1.setLayout(new BorderLayout());
jp1.add(jl,BorderLayout.CENTER);
jp1.add(jtxtip,BorderLayout.SOUTH);
jp2.setLayout(new GridLayout(2,2));
jp2.add(jbopen);
jp2.add(jbsave);
jp2.add(jbsend);
jp2.add(jbexit);
jf.setLayout(new BorderLayout());
jf.getContentPane().add(jp1,BorderLayout.CENTER);
jf.getContentPane().add(jp2,BorderLayout.SOUTH);
jbopen.addActionListener(this);
jbsend.addActionListener(this);
jbsave.addActionListener(this);
jbexit.addActionListener(this);
jf.setSize(300,200);
jf.show();
}
//接收文件
public void save()
{
try
{
//ServerSocket ss = new ServerSocket(4001);
Socket sa = new Socket("127.0.0.1",80);//ss.accept();
BufferedInputStream inn = new BufferedInputStream(sa.getInputStream());
FileOutputStream fout = new FileOutputStream(savefile);
System.out.print("save");
int i;
while((i = inn.read())!= -1)
{
fout.write(i);
}
sa.close();
inn.close();
fout.close();
}catch(Exception f1){System.out.print(f1.getMessage());}
}
public static void main(String[] args)
{
FileClielt fic = new FileClielt();
fic.FileClielt();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jbopen)
{
JFileChooser fcopen = new JFileChooser("C://");
fcopen.setMultiSelectionEnabled(false);
int result = fcopen.showOpenDialog(new JFrame());
if (result == JFileChooser.APPROVE_OPTION)
{
File[] f = fcopen.getSelectedFiles();
for (int i = 0; i < f.length; i++)
{
openfile = f[i].getPath();
}
}
}
if(e.getSource()==jbsend)
{
//发送文件
try
{
Socket so = new Socket(jtxtip.getText(),80);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(openfile));
int i;
PrintStream p = new PrintStream(so.getOutputStream());
System.out.print("send");
while((i = in.read())!= -1)
{
p.print(i);
}
so.close();
in.close();
}catch(Exception f){System.out.print(f.getMessage());}
}
if(e.getSource()==jbsave)
{
JFileChooser fcsave = new JFileChooser("C://");
fcsave.setMultiSelectionEnabled(false);
int result = fcsave.showSaveDialog(new JFrame());
if (result == JFileChooser.APPROVE_OPTION)
{
File[] f = fcsave.getSelectedFiles();
for (int i = 0; i < f.length; i++)
{
savefile = f[i].getPath();
}
}
this.save();
}
if(e.getSource()==jbexit)
{
System.exit(0);
}
}
}
7 个解决方案
#1
编译通过了吗?
#2
jf.setLayout(new BorderLayout()); 这一句在j2se 1.4.2里是不赞成使用的,虽然能编译,但执行时报错:
java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead
at javax.swing.JFrame.createRootPaneException(JFrame.java:465)
at javax.swing.JFrame.setLayout(JFrame.java:531)
at test.FileClielt.FileClielt(FileClielt.java:35)
at test.FileClielt.main(FileClielt.java:71)
Exception in thread "main"
改成下边这样:
jf.getContentPane().setLayout(new BorderLayout());
java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead
at javax.swing.JFrame.createRootPaneException(JFrame.java:465)
at javax.swing.JFrame.setLayout(JFrame.java:531)
at test.FileClielt.FileClielt(FileClielt.java:35)
at test.FileClielt.main(FileClielt.java:71)
Exception in thread "main"
改成下边这样:
jf.getContentPane().setLayout(new BorderLayout());
#3
通过!!也可以连接!!就是发的时候是null!!
帮忙看看!!!
帮忙看看!!!
#4
我运行可以的!!我的是1.5.0!!
界面那里不要理!!我只想知道为什么发不到文件啊!!帮忙再看看啊!!!
界面那里不要理!!我只想知道为什么发不到文件啊!!帮忙再看看啊!!!
#5
发送这一段,so是远程的 socket, 可是你并没有写到那里去呀。
是不是应该加上两句
OutputStream soOutStream = so.getOutputStream()
so.write(......);
是不是应该加上两句
OutputStream soOutStream = so.getOutputStream()
so.write(......);
#6
上面的错了,重写一遍:
发送这一段,so是远程的 socket, 可是你并没有写到那里去呀。
是不是应该加上两句
OutputStream soOutStream = so.getOutputStream()
soOutStream.write(......);
发送这一段,so是远程的 socket, 可是你并没有写到那里去呀。
是不是应该加上两句
OutputStream soOutStream = so.getOutputStream()
soOutStream.write(......);
#7
哦,是我没看清楚,你已经往p里写了。
#1
编译通过了吗?
#2
jf.setLayout(new BorderLayout()); 这一句在j2se 1.4.2里是不赞成使用的,虽然能编译,但执行时报错:
java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead
at javax.swing.JFrame.createRootPaneException(JFrame.java:465)
at javax.swing.JFrame.setLayout(JFrame.java:531)
at test.FileClielt.FileClielt(FileClielt.java:35)
at test.FileClielt.main(FileClielt.java:71)
Exception in thread "main"
改成下边这样:
jf.getContentPane().setLayout(new BorderLayout());
java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead
at javax.swing.JFrame.createRootPaneException(JFrame.java:465)
at javax.swing.JFrame.setLayout(JFrame.java:531)
at test.FileClielt.FileClielt(FileClielt.java:35)
at test.FileClielt.main(FileClielt.java:71)
Exception in thread "main"
改成下边这样:
jf.getContentPane().setLayout(new BorderLayout());
#3
通过!!也可以连接!!就是发的时候是null!!
帮忙看看!!!
帮忙看看!!!
#4
我运行可以的!!我的是1.5.0!!
界面那里不要理!!我只想知道为什么发不到文件啊!!帮忙再看看啊!!!
界面那里不要理!!我只想知道为什么发不到文件啊!!帮忙再看看啊!!!
#5
发送这一段,so是远程的 socket, 可是你并没有写到那里去呀。
是不是应该加上两句
OutputStream soOutStream = so.getOutputStream()
so.write(......);
是不是应该加上两句
OutputStream soOutStream = so.getOutputStream()
so.write(......);
#6
上面的错了,重写一遍:
发送这一段,so是远程的 socket, 可是你并没有写到那里去呀。
是不是应该加上两句
OutputStream soOutStream = so.getOutputStream()
soOutStream.write(......);
发送这一段,so是远程的 socket, 可是你并没有写到那里去呀。
是不是应该加上两句
OutputStream soOutStream = so.getOutputStream()
soOutStream.write(......);
#7
哦,是我没看清楚,你已经往p里写了。