美文网首页
11.字节流操作文件夹

11.字节流操作文件夹

作者: 木有鱼丸啦 | 来源:发表于2017-11-04 22:37 被阅读0次

//使用字节流访问一个路径下的文件夹,遍历复制含有java文件的文件夹

package com.itheima_02;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Scanner;

public class Test02_2 {

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

// File src = getDir();

// File dest = getDir();

//源目录

File src = new File("D:\\workspace");

//目标目录

File dest = new File("d:\\copy");

copy(src, dest);

}

private static void copy(File src, File dest) throws IOException {

// 获取源文件夹中的所有内容(子文件夹和文件)

File[] listFiles = src.listFiles();

// 判断File数组是否为空(因为系统有些隐藏文件不能被直接访问)

if(listFiles != null){

// 遍历File数组

for (File subFile : listFiles) { // subFile表示 这个数组中(源文件)的 子文件夹和文件

if(subFile.isFile() && subFile.getName().endsWith(".java")){ // 判断这个File是否为文件并且是否以.java为后缀名结尾

// 使用IO流拷贝文件

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(dest, subFile.getName())));

byte[] buf = new byte[1024];

int len;

while((len = bis.read(buf)) != -1){

bos.write(buf, 0, len);

}

bos.close();

bis.close();

} else if(subFile.isDirectory()){

// 由于subFile是代表源文件夹中的子文件夹,而目的地中并没有这个目录(即subFile), 所以需要现在目标文件夹中创建 这个目录

// 为啥非要在目的地中创建subFile文件夹呢? 因为,subFile文件夹中有可能有文件,而这个subFile里边的文件必须得拷贝目标文件夹中的subFile这个目录中,所以需要在目的地中创建这个subFile目录

// 若要创建文件夹,必须通过File对象

if(compare(subFile)){ // D:\\workspace\\abc

File newDir = new File(dest, subFile.getName());

if(!newDir.exists())

newDir.mkdir();

// 递归调用此方法

copy(subFile, newDir);

}

}

}

}

}

/*

* 要确定是否在目标文件夹中创建这个目录,只需要明确传递过来的文件夹中,是否有包含.java文件

* 举例:

* 判断  D:\\workspace文件夹中是否有以.java结尾的文件

* 只要D:\\workspace文件夹中当前目录有.java文件或者D:\\workspace目录的子文件夹中有.java文件,都称之为D:\\workspace文件夹中有.java文件

*/

private static boolean compare(File dir) { // D:\\workspace\\abc

// D:\\workspace\\abc\\exam0425

//  aa

//cc

//  bb

//dd

File[] listFiles = dir.listFiles(); // listFiles代表当前路径下的所有文件和文件夹

if(listFiles != null){

for (File subFile : listFiles) { // D:\\workspace\\abc\\exam0425  D:\\workspace\\abc\\RemoteSystemsTempFiles

if(subFile.isFile() && subFile.getName().endsWith(".java")){

return true;

} else if(subFile.isDirectory()){ // D:\\workspace\\abc\\exam0425

boolean flag = compare(subFile);

if(flag == false){

continue;

} else{

return flag;

}

}

}

}

return false;

}

// 键盘录入文件夹路径

private static File getDir() {

Scanner sc = new Scanner(System.in);

while(true){

System.out.println("请输入一个文件夹路径字符串:");

String line = sc.nextLine();

// 将字符串转换成File对象,因为只有File对象,才能判断这个字符串路径是否为文件夹路径。

File dir = new File(line);

// 判断这个File是否是文件夹路径

if(dir.isDirectory()){

return dir;

} else{

System.out.println("你录入的路径有误,请重新录入:");

}

/*if(dir.isDirectory()){

return dir;

} else if(dir.isFile()){

System.out.println("你录入的是文件路径,请重新录入");

} else{

System.out.println("你录入的路径有误,请重新录入:");

}*/

}

}

}

相关文章

  • 11.字节流操作文件夹

    //使用字节流访问一个路径下的文件夹,遍历复制含有java文件的文件夹 package com.itheima_0...

  • Java 字符流操作

    上篇文章Java 字节流操作介绍了java中基本的字节流操作,但是我们常常对于字符操作,如果使用字节流来实现输入输...

  • 图解防抖动与节流模式

    防抖动 防抖动立即触发 防抖动 节流 节流立即触发 节流 总结 防抖动:将多个操作合并为一个操作(例如,键盘输入关...

  • 1.字节流和字符流

    字节流 字节流主要是操作byte类型数据,以byte数组为准,主要操作类就是OutputStream、InputS...

  • JS节流小知识

    一、什么是节流? 节流:当某个操作是连续性执行的时候,我们通过某种方式,降低该操作的执行频率,这就是节流。就跟水龙...

  • JavaScript-DOM

    操作DOM 更新DOM 9.表单 10.操作文件 11.回调

  • 节流模式

    一、节流模式(Throttler) 对重复的业务逻辑进行节流控制,并执行最后一次操作并取消其它操作,以提高性能。 ...

  • 2018-07-10

    一、Notepad 1、新建文件夹 2、工作区 关键字操作addremove/remove allcopy pat...

  • No_16_0322 Java基础学习第二十二天

    [TOC] 转换流出现的原因及思想 由于字节流操作中文不是特别方便,所以,java就提供了转换流。 字符流 = 字...

  • I/O流之文件流

    文件流可以分为字节流和字符流字节流字节流可以对任何文件进行操作 ,但效率不如字符流高字节流分为字节输入流和字节输...

网友评论

      本文标题:11.字节流操作文件夹

      本文链接:https://www.haomeiwen.com/subject/biiqmxtx.html