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)
{
}
}
}
} 这是我做的一个复制程序代码 不知道哪里错了 不能实现复制功能
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)
{
}
}
}
} 这是我做的一个复制程序代码 不知道哪里错了 不能实现复制功能
while (fi.read(b)!=-1)
{
fo.write(b);
fo.flush();
i=fi.read(b);
}这里fi读了很多次,但写了没几次
while(fi.read(b)!=-1){fo.write(b)};
循环结束再flush也不迟
我的程序没有报错, 只是运行问题!
FileInputStream fi=new FileInputStream(f);
FileOutputStream fo=new FileOutputStream(fname1);这里可能会涉及到一个文件路径中\与\\的文件..可能是你这里的文件路径不对..
你可以试着改成这样试试就能知道是否这里出问题了FileInputStream fi=new FileInputStream("c:\\a.txt");
FileOutputStream fo=new FileOutputStream("c:\\b.txt");
String fname,fname1;这句放在了内部类里。。这样是不行的。。你需要把他放到你外部类里。把内部类里那句去掉。。
在外部类里定义
class copy
{
public String fname,fname1;
.......
File f=new File(fname);
FileInputStream fi=new FileInputStream(f);
FileOutputStream fo=new FileOutputStream(fname1);这几句时fname和fname是没有值的,所以不能复制成功...