java 选择文件夹 JFileChooser

//案例是复制文件夹的案例


JFileChooser jf=new JFileChooser();


jf.setFileSelectionMode(JFileChooser.SAVE_DIALOG | JFileChooser.DIRECTORIES_ONLY);
jf.setCurrentDirectory(new File("D:\\"));//设置默认路径
jf.setDialogTitle("选择需要复制的文件夹");
if(jf.showOpenDialog(JIO.this)==JFileChooser.APPROVE_OPTION)
{
File fi = jf.getSelectedFile();
JOptionPane.showMessageDialog(null, "接下来选择目标文件夹");
jf.setDialogTitle("选择目标文件夹");
if(jf.showOpenDialog(JIO.this)==JFileChooser.APPROVE_OPTION)
{
File ti = jf.getSelectedFile();

if(fi.exists()&&fi.isDirectory())
{

File[] filelist=fi.listFiles();
int fcout=filelist.length;
for(int i=0;i<fcout;i++)
{
fileChannelCopy(filelist[i],ti);
}


    }

}

}



//复制文件夹的方法

public void fileChannelCopy(File s, File t) {


if(s.isDirectory())
{
File nf=new File(String.format(t.getPath()+File.separator+s.getName()));
if(!nf.exists())
{
nf.mkdir();
}

File[] filelist=s.listFiles();
for(File fi:filelist)
{
nf=new File(String.format(nf.getPath()));
fileChannelCopy(fi,nf);
}
}
else
{
        FileInputStream fi = null;


        FileOutputStream fo = null;


        FileChannel in = null;


        FileChannel out = null;


        try {
       t=new File(String.format(t.getPath()+File.separator+s.getName()));
            fi = new FileInputStream(s);


            fo = new FileOutputStream(t);


            in = fi.getChannel();//得到对应的文件通道


            out = fo.getChannel();//得到对应的文件通道


            in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道


        } catch (IOException e) {


            e.printStackTrace();


        } finally {


            try {


                fi.close();


                in.close();


                fo.close();


                out.close();


            } catch (IOException e) {


                e.printStackTrace();


            }


        }
}


    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值