内容我都在注释里说明了,有什么不懂的可以问我.主要是为了回顾下文件的创建和文件流的读写,所以写了这个拷贝的代码,还可以添加很多功能,像拷贝哪个文件到哪都是可以改个,可以用scanner输入,还有就是可以再加个delete()那么程序就变成剪切功能了.

package io;

import java.io.File;

import java.io.RandomAccessFile;

/**

* java实现拷贝一个文件夹,里面存在目录和文件,使用文件创建和文件流

* 读到file文件复制里面的内容,读到目录,复制目录,并查看里面是否还有文件

* @author 温先生

*

*/

public class FileCopy {

public static void main(String[] args) throws Exception {

FileCopy fileCopy = new FileCopy();

String fixed = "a/b/c/d";//fixed定义为固定,就是你要粘贴到这里

String moveto = "a/c";//moveto定义为移动的文件

String[] movetos = moveto.split("/");//切割的目的是得到c文件,去掉前面的文件路径,一定要去掉,不然后面会因为路径错误找不到文件

String moveto_cut= movetos[movetos.length-1];

File file1 = new File(moveto);//创建file1对象,固定file1为拷贝的文件,同下

if (file1.isFile()) {//判断是否为文件

//创建file1对象,固定file2为拷贝形成的文件或目录,同下

File file2 = new File(fixed+"/"+moveto_cut);//这里用切割后的,很容易理解为什么

file2.createNewFile();//创建一个文件

//读取原文件里面的数据,存到新文件里

RandomAccessFile raf = new RandomAccessFile(file1, "rw");

byte[] bs = new byte[(int) file1.length()];

raf.read(bs);

RandomAccessFile raf2 = new RandomAccessFile(file2, "rw");

raf2.write(bs);

raf.close();

raf2.close();

}

if (file1.isDirectory()) {//判断是否为目录

File file2 = new File(fixed+"/"+moveto_cut);

file2.mkdir();

fileCopy.copy(fixed+"/"+moveto_cut, moveto);

}

}

public void copy(String fixed,String moveto) throws Exception {

System.out.println(fixed);//打桩查看数据

System.out.println(moveto);//打桩查看数据

File file = new File(moveto);//这里定义为file,因为要获取file里面所有的文件目录和文件

File[] files = file.listFiles();//获取file里面所有的文件目录和文件

for (int i=0;i

if (files[i].isFile()) {

File file2 = new File(fixed+"/"+files[i].getName());//要新建文件的目录+文件名

System.out.println("创建了文件:"+files[i].getName());

File file1 = new File(moveto+"/"+files[i].getName());//原拷贝文件的目录+文件名

file2.createNewFile();//创建一个文件

//读取原文件里面的数据,存到新文件里

RandomAccessFile raf = new RandomAccessFile(file1, "rw");

byte[] bs = new byte[(int) file1.length()];

raf.read(bs);

RandomAccessFile raf2 = new RandomAccessFile(file2, "rw");

raf2.write(bs);

raf.close();

raf2.close();

}

if (files[i].isDirectory()) {

moveto=moveto+"/"+files[i].getName();//文件的目录

File file2 = new File(moveto);//要新建文件的目录

System.out.println("创建了目录:"+files[i].getName());

file2.mkdir();//创建一个目录

copy(fixed+"/"+files[i].getName(), moveto);//递归

}

}

}

}

java复制文件夹_java实现拷贝一个文件夹,里面存在目录和文件,使用文件创建和文件流...相关推荐

  1. java复制和上传_java文件上传复制等功能

    package com.sitech.message.controller.task; import java.io.File;//引入类 import java.io.FileInputStream ...

  2. java老鸟123怎么样_java入门123——一个老鸟的java学习心得.doc

    java入门123--一个老鸟的java学习心得 java入门123--一个老鸟的java学习心得 篇一:java初学者学习心得 学习Java心得体会 学习了一学期的Java课程,觉得是该总结自己的心 ...

  3. java gradle 资源访问_java在gradle工程访问src/test/resources目录下的资源配置文件

    package com.jiepu; import java.io.File; import java.net.URISyntaxException; import java.util.Map; im ...

  4. cmd移动文件到另一个文件夹_Java 如何获得一个文件或文件夹的大小

    有时候我们需要知道一个文件的大小. 我们可以使用一些方法,比如说将文件读取成 InputStream,然后再使用 available() 获得长度就可以了. 我们也可以使用 FileUtils 来获得 ...

  5. java 复制实体类_Java实现两个实体类相同属性的复制/拷贝

    在两个实体类里,有相同的属性,有不同的属性,相同名称的属性类型还可能不同,如何实现相同属性的拷贝/复制呢? 实体类 代码清单1:Neo4jNode.java package com.graph.dom ...

  6. java 校验文件类型_java如何判断一个文件的类型 | 学步园

    用文件头判断.直接读取文件的前几个字节. 常用文件的文件头如下: JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 ...

  7. Java创建一个文件变量_java如何定义一个类,创建它的成员变量和方法?

    展开全部 类即对象的思想,一个对象包含e68a843231313335323631343130323136353331333337623439了属于自己的成员变量和操作方法. 如何定义一个类,得看你对 ...

  8. Java报告比较日期_Java程序如果一个日期在另一个日期之后比较日期

    如果某个日期在另一个日期之后,则要比较日期,请使用Calendar.after()方法. Calendar.after()方法返回此Calendar的时间是否晚于指定Object表示的时间.首先,让我 ...

  9. java 安卓视频播放器_java - 学习做一个安卓视频播放器,有一些小问题!忘大家请教...

    小葫芦2017-04-18 10:51:293楼 首先解决你的一点疑惑,如何获取本地所有视频路径.Android系统在存储视频,音频,图片等资源的时候,会自动把其相关信息存储在数据库中,信息包括名字, ...

最新文章

  1. 南开大学提出最新边缘检测与图像分割算法,精度刷新记录(附开源地址)
  2. centos7 配置国内yum源和epel源
  3. TCP之三次握手四次挥手 1
  4. 基础语法(IDE:PyCharm)
  5. 一个插排引发的设计思想 (三) 委托与事件
  6. nyoj-Human Gene Functions
  7. matlab 次坐标轴 标注,matlab标注坐标轴
  8. 1.1.0-简介-P9-分布式ID生成器解决方案
  9. redis没有bin目录_分布式缓存 Redis 集群搭建,这里一次性帮你搞定!
  10. cad卸载_IT运维:CAD卸载不彻底,无法重装?
  11. teams快捷键_每个Microsoft Teams键盘快捷键及其使用方法
  12. Android—传感器-距离传感器(ProximitySensor)
  13. poscms统计数据调用
  14. Xtract or Ucfyber的最条理的整理入门级教程
  15. 【Python】P1008 [NOIP1998 普及组] 三连击
  16. 简七32堂极简理财课——模块三:日常理财,让你时时刻刻都有钱
  17. html显示用户ipv6地址,IPv6地址查询
  18. 22、Java——汽车租赁系统(对象+集合)
  19. 程序员表白html倒计时,火热的程序员表白方式,调皮弹窗表白代码,赶紧拿去试试吧...
  20. 计算机毕业设计 SpringBoot+Vue招投标系统 招标系统 投标系统 招标采购系统Java Vue MySQL数据库 远程调试 代码讲解

热门文章

  1. 【C语言】scanf()输入浮点型数据
  2. C#LeetCode刷题之#682-棒球比赛(Baseball Game)
  3. javascript 框架_我们仍然需要JavaScript框架吗?
  4. ruby 新建对象_Ruby面向对象编程简介
  5. 狂神说学习笔记 Java流程控制
  6. C#入门,基本的整型输入
  7. python图像处理:一福变五福
  8. python实现TCP远程服务器文件上传,下载系统
  9. @SpringBootApplication
  10. 【CCF】201803-2 碰撞的小球