帮忙找一下错!! 谢谢(1天结帖)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
class copy
{
JFrame f;
JPanel p;
JPanel p1;
JPanel p2;
JPanel p3;JLabel jl=new JLabel(" ");
JLabel jl1=new JLabel("");
JLabel jl2=new JLabel("");
JLabel jl3=new JLabel("");
JLabel jl4=new JLabel("");
JFileChooser fc1=new JFileChooser("请选择输出路径");
JTextField t=new JTextField(" ");
JTextField t1=new JTextField(" ");
JButton b1=new JButton("确定");
JButton b2=new JButton("取消");
JButton b3=new JButton("退出");
JButton b4=new JButton("选择");
JButton b5=new JButton("保存");
copy()
{
f=new JFrame();
f.setTitle("复制程序");
BorderLayout bl=new BorderLayout();
f.getContentPane().setLayout(bl);
f.setSize(400,300);
f.setLocation(300,300);
p=new JPanel(new GridLayout(3,1,10,10));
f.getContentPane().add("Center",p);
p1=new JPanel();p1.setLayout(new FlowLayout());
p2=new JPanel();p2.setLayout(new FlowLayout());
p3=new JPanel();p3.setLayout(new FlowLayout());
p1.add(t);
p1.add(b4);
p2.add(t1);
p2.add(b5);
f.getContentPane().add("North",jl);
f.getContentPane().add("Center",p);
p.add(p1);
p.add(p2);
p.add(p3);
p3.add(b1);
p3.add(b2);
p3.add(b3);
f.setVisible(true);
b4.addActionListener(new buttonA(1));
b5.addActionListener(new buttonA(2));
b1.addActionListener(new buttonA(3));
b2.addActionListener(new buttonA(4));
b3.addActionListener(new buttonA(5));
}
public static void main(String args[])
{
copy my=new copy();
}
class buttonA implements ActionListener
{
JFileChooser fc=new JFileChooser("c:/");
int sel;
File sf,sf1;
String fname,fname1;
buttonA(int select)
{
this.sel=select;
}
public void actionPerformed(ActionEvent e)
{
if(sel==1)
{
fc.showOpenDialog(null);
sf=fc.getSelectedFile();
fname=sf.getAbsolutePath();
t.setText(fname);
}
else if(sel==2)
{
fc1.showOpenDialog(null);
sf1=fc1.getSelectedFile();
fname1=sf1.getAbsolutePath();
t1.setText(fname1);
}
else if(sel==3)
{
try
{
File f=new File(fname);
FileInputStream fi=new FileInputStream(f);
FileOutputStream fo=new FileOutputStream(fname1);
byte b[]=new byte[1024];
int i=fi.read(b);
while (fi.read(b)!=-1)
{
fo.write(b);
fo.flush();
i=fi.read(b);
}
System.out.println ("复制完毕");
fi.close();
fo.close();
}catch(Exception e1){}
}
else if(sel==5)
{
System.exit(0);
}
else if(sel==4)
{
}
}
}
} 这是我做的一个复制程序代码 不知道哪里错了 不能实现复制功能
问题点数:20、回复次数:10Top
1 楼lydvqq(碧水情缘♀黑哥)回复于 2006-03-03 21:57:32 得分 0
报什么错,在哪个地方报错?Top
2 楼believefym(feng)回复于 2006-03-03 21:57:35 得分 0
int i=fi.read(b);
while (fi.read(b)!=-1)
{
fo.write(b);
fo.flush();
i=fi.read(b);
}
这里fi读了很多次,但写了没几次
while(fi.read(b)!=-1){fo.write(b)};
循环结束再flush也不迟Top
3 楼humous99(前夕的泪)回复于 2006-03-03 23:10:50 得分 0
没用 我试过了
回lydvqq(碧水情缘♀黑哥) :
我的程序没有报错, 只是运行问题!Top
4 楼humous99(前夕的泪)回复于 2006-03-04 09:28:18 得分 0
怎么没人看哪 求救啊``~`Top
5 楼725137(2006年不会菜)回复于 2006-03-04 11:07:53 得分 0
估计应该是你这里的问题..
File f=new File(fname);
FileInputStream fi=new FileInputStream(f);
FileOutputStream fo=new FileOutputStream(fname1);
这里可能会涉及到一个文件路径中\与\\的文件..可能是你这里的文件路径不对..
你可以试着改成这样试试就能知道是否这里出问题了
FileInputStream fi=new FileInputStream("c:\\a.txt");
FileOutputStream fo=new FileOutputStream("c:\\b.txt");
Top
6 楼humous99(前夕的泪)回复于 2006-03-04 11:14:43 得分 0
改过了 不是这里的问题 - -!~Top
7 楼725137(2006年不会菜)回复于 2006-03-04 11:36:26 得分 0
哦。仔细一才看发现。你把
String fname,fname1;这句放在了内部类里。。这样是不行的。。你需要把他放到你外部类里。
把内部类里那句去掉。。
在外部类里定义
class copy
{
public String fname,fname1;
.......Top
8 楼humous99(前夕的泪)回复于 2006-03-04 11:37:57 得分 0
J2SE 扩展里也有这帖子 一旦问题解决 请过去领分
Top
9 楼725137(2006年不会菜)回复于 2006-03-04 11:38:36 得分 20
还有。你根本没按我第一次的方法改了试下啊。。你说你改了发现不是那里的问题。我这才发现。你把这放到了内部类里。。放在内部类里的话。按道理你在调用
File f=new File(fname);
FileInputStream fi=new FileInputStream(f);
FileOutputStream fo=new FileOutputStream(fname1);
这几句时fname和fname是没有值的,所以不能复制成功...
Top
10 楼humous99(前夕的泪)回复于 2006-03-04 11:41:10 得分 0
好了 谢谢了啊``~` 请去扩展版领分Top




