开始时间 2020-12-01

DataInputStream、DataOutputStream

package BUPT20201130;import java.io.*;/*
Java.IO.DataOutputStream
可以将数据连同数据的类型一并写入文件
写入的文件只能用DataInputStream去读
并且必须要知道提前写的顺序*/
public class DataInputStreamTest01 {public static void main(String[] args) throws Exception {DataInputStream dataInputStream = new DataInputStream(new FileInputStream("data"));byte b = dataInputStream.readByte();short s = dataInputStream.readShort();boolean sex = dataInputStream.readBoolean();char c = dataInputStream.readChar();System.out.println(b);System.out.println(s);System.out.println(sex);System.out.println(c);dataInputStream.close();}
}
package BUPT20201130;import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/*
Java.IO.DataOutputStream
可以将数据连同数据的类型一并写入文件*/
public class DataOutputStreamTest01 {public static void main(String[] args) throws IOException {//写入的不是普通文本文件了,记事本打开会乱码DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("data"));byte b = 10;short s = 200;boolean sex = true;char c = 'a';//把数据和数据类型一并写入类型当中dataOutputStream.writeByte(b);dataOutputStream.writeShort(s);dataOutputStream.writeBoolean(sex);dataOutputStream.writeChar(c);dataOutputStream.flush();dataOutputStream.close();}
}

标准输出流

记录日志

package BUPT20201130;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;public class Logger {public static void log(String msg) throws FileNotFoundException {//指向文件PrintStream printStream = new PrintStream(new FileOutputStream("log.txt", true));//改变输出方向System.setOut(printStream);//获取当前时间Date nowTime = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");String s = simpleDateFormat.format(nowTime);System.out.println(s + ":" + msg);}
}
package BUPT20201130;import java.io.FileNotFoundException;public class LogTest {public static void main(String[] args) throws FileNotFoundException {Logger.log("调用该方法成功");}
}

File类

File代表一个文件或者目录路径名的抽象表示形式

常用的几种方法

package BUPT20201130;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;/*
不是流,不是直接用于读写*/
public class FileTest {public static void main(String[] args) throws IOException {/*F:\编程学习\Java学习F:\编程学习\Java学习\学习啊.txt两个都是File对象常用方法*/File file = new File("F:\\编程学习\\Java学习\\File");//可以判断是否存在System.out.println(file.exists());//如果File文件不存在,就以文件的形式创一个出来if (!file.exists()) {//以文件形式新建file.createNewFile();/*以目录的形式新建file.mkdir();*/}File file1 = new File("F:\\编程学习\\Java学习\\file\\DoubleKill\\b\\c");System.out.println(file1.exists());if (!file1.exists()) {//以多重目录的形式新建file1.mkdirs();}//获取父路径File file2 = new File("F:\\编程学习\\Java学习\\学习啊.txt");String parentPath = file2.getParent();System.out.println(parentPath);File parentFile = file2.getParentFile();//获取绝对路径System.out.println("绝对路径" + parentFile.getAbsolutePath());}
}

这种遍历得到文件/文件名/所有子目录
Python中也有
参考Python中的操作

package BUPT20201130;import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;public class FileTest02 {public static void main(String[] args) {File file = new File("F:\\编程学习\\Java学习\\学习啊.txt");//获取文件名System.out.println("文件名是:" + file.getName());//判断是文件还是文件夹System.out.println(file.isFile());System.out.println(file.isDirectory());//获取最后一次修改时间long time = file.lastModified();Date Time = new Date(time);SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String string = simpleDateFormat.format(Time);System.out.println(string);//获取文件大小System.out.println(file.length());}
}
package BUPT20201130;import java.io.File;public class FileTest03 {public static void main(String[] args) {//获取所有子目录File f = new File("F:\\编程学习\\Java学习");File[] files=f.listFiles();for(File fil :files){System.out.println(fil.getAbsolutePath());}}
}

复制目录

import java.io.File;public class CopyAll {public static void main(String[] args) {//拷贝源File srcFile=new File("E:\\研一\\研读论文");//拷贝目标File destFile=new File("F:\\新建论文");//调用方法拷贝copyDir(srcFile,destFile);}private static void copyDir(File srcFile, File destFile) {//获取源下面的子目录File files[]=srcFile.listFiles();//先对读取的files进行测试System.out.println(files.length);}
}

进一步更新版本
考虑读取目录所有文件,所有子文件夹以及子文件夹下的所有文件

private static void copyDir(File srcFile, File destFile) {if(srcFile.isFile()){//如果srcFile是一个文件,递归结束return;}//获取源下面的子目录File files[]=srcFile.listFiles();//先对读取的files进行测试,有可能是目录有可能是文件for(File file:files){//递归调用,能够读取目录下的所有文件,以及子文件夹下的所有文件System.out.println(file.getAbsolutePath());copyDir(file,destFile);}}

进一步考虑建立粘贴到的目标文件夹下的目录

private static void copyDir(File srcFile, File destFile) {if(srcFile.isFile()){//如果srcFile是一个文件,递归结束return;}//获取源下面的子目录File files[]=srcFile.listFiles();//先对读取的files进行测试,有可能是目录有可能是文件for(File file:files){//递归调用,能够读取目录下的所有文件,以及子文件夹下的所有文件if(file.isDirectory()) {// System.out.println(file.getAbsolutePath());String srcDir=file.getAbsolutePath();//把盘符截掉//System.out.println(srcDir.substring(3));String destDir=(destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():destFile.getAbsolutePath()+"\\")+srcDir.substring(3);System.out.println(destDir);}copyDir(file,destFile);}}

做出所有目标文件夹

private static void copyDir(File srcFile, File destFile) {if(srcFile.isFile()){//如果srcFile是一个文件,递归结束return;}//获取源下面的子目录File files[]=srcFile.listFiles();//先对读取的files进行测试,有可能是目录有可能是文件for(File file:files){//递归调用,能够读取目录下的所有文件,以及子文件夹下的所有文件if(file.isDirectory()) {// System.out.println(file.getAbsolutePath());String srcDir=file.getAbsolutePath();//把盘符截掉//System.out.println(srcDir.substring(3));String destDir=(destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():destFile.getAbsolutePath()+"\\")+srcDir.substring(3);System.out.println(destDir);File newFile=new File(destDir);if(!newFile.exists()){newFile.mkdirs();}}copyDir(file,destFile);}}

最终成型

import java.io.*;public class CopyAll {public static void main(String[] args) throws IOException {//拷贝源File srcFile = new File("E:\\研一\\研读论文");//拷贝目标File destFile = new File("F:\\新建论文\\");//调用方法拷贝copyDir(srcFile, destFile);}private static void copyDir(File srcFile, File destFile)  {if (srcFile.isFile()) {//如果srcFile是一个文件,递归结束FileInputStream inputStream = null;FileOutputStream outputStream = null;try {//可以把File传到FileinputStream//读和写inputStream = new FileInputStream(srcFile);String path = (destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsolutePath() + "\\") + srcFile.getAbsolutePath().substring(3);outputStream = new FileOutputStream(path);byte[] bytes = new byte[1024 * 1024];//一次复制一兆int readCount = 0;while ((readCount = inputStream.read(bytes)) != -1) {outputStream.write(bytes, 0, readCount);}outputStream.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (outputStream != null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}return;}//获取源下面的子目录File files[] = srcFile.listFiles();//先对读取的files进行测试,有可能是目录有可能是文件for (File file : files) {//递归调用,能够读取目录下的所有文件,以及子文件夹下的所有文件System.out.println(file.getAbsolutePath());if (file.isDirectory()) {//System.out.println(file.getAbsolutePath());String srcDir = file.getAbsolutePath();//把盘符截掉//System.out.println(srcDir.substring(3));String destDir = (destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsolutePath() + "\\") + srcDir.substring(3);File newFile = new File(destDir);if (!newFile.exists()) {newFile.mkdirs();}}//递归调用copyDir(file, destFile);}}}

虽然所有的文件都实现了复制
但是还是存在一点报错

结束时间:2021-1-4

JavaSE进阶582-589 IO流(二)File类/目录拷贝相关推荐

  1. java io 创建文件夹_Java中Io流操作-File类的常用操作-创建文件,创建文件夹

    package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...

  2. java.io.file.sync_Java(25)IO流和File类

    IO流+File类 File类 讲IO流之前先来讲以下File类.Java的标准库Java.io提供了File类来操作文件和目录.操作可以有:新建.删除.重命名等,但是不能访问文件本身的内容,如果想要 ...

  3. Java的IO流之File类

    java的IO流模块常用的工具有File.字节流.字符流.特殊操作流,本篇文章便是本人学习File类的一次学习记录. 一.File类概述 File:是文件和目录路径名的抽象表示 ① 文件和目录是可以通 ...

  4. java基础--IO流之File类

    一.File类概述 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数 二.File类常见方法: 1,创建 boolean createN ...

  5. java-IO流(1)-IO流和File类的介绍

    目录 1 IO流的概念 2 IO流体系结构 3Java中流的分 3.1按流向分 3.2按数据传输单位分 3.3按功能分 4File类介绍 4.1File类的作用 4.2常见的构造函数 4.3提供方法 ...

  6. 黑马程序员——Java基础--IO流(一)---File类以及其他流对象

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.File类 File类是将文件系统中的文件和文件夹封装成了对象.提供了更多的属性和行为可以对 ...

  7. 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流

    1.File类概述   File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作.   前面说到的"流",它只能操作数据,想 ...

  8. IO流之 File 类和字节流

    文章目录 一.File 类 1. 概述 2. 创建功能 3. 删除功能 4. 判断和获取功能 5. 递归策略 5.1 递归求阶乘 5.2 遍历目录 二.字节流 1. IO 流概述 2. 字节流写数据 ...

  9. Java高级:IO流、File类、抽象基类、节点流、缓冲流、图片加密、其他流、对象流、随机存取文件流

    package com.atguigu.java3;import org.junit.Test;import java.io.File; import java.io.IOException; imp ...

  10. 20170118:File类与IO流,File类,IO流的基本原理,IO流的分类,文件字节流与文件字符流

    一.File类 1.java.io.File类代表系统文件(文件和目录) 访问文件属性步骤 1). 创建文件对象:File file = new File(String pathname); 2). ...

最新文章

  1. Android View的加载过程
  2. maven工程的标准目录结构
  3. Python爬虫入门教程 26-100 知乎文章图片爬取器之二
  4. matlab实验8数据分析与多项式计算,hashidamatlab实验八数据处理与多项式计算.doc
  5. 微服务架构 vs SOA架构
  6. Linux 2.6.39.1 Hello world 驱动总结
  7. lenovo电脑_诠释什么叫性价比?LENOVO联想ThinkPad P72/P73 ?仅售16200.00元?
  8. 诺基亚n9支不支持java,支持诺基亚N9 MeeGo UC浏览器正式发布
  9. python3.6安装步骤-详解win7下python3.6安装配置方法步骤
  10. java txt中统计一个字母出现的次数并储存,统计txt文件中每个字符出现的次数,并根据次数从高到低排序...
  11. SQL中COUNT()函数介绍
  12. img标签过滤加fs模块实现图片文件缓存
  13. tp3.2 页面trace使用
  14. Java实现密码加密
  15. jquerymp3文件下载_前端实现文件下载所有方式
  16. 百度经纬度和google经纬度互转
  17. 网络安全专家郭盛华:无线传感器网络的传输安全性
  18. 【Unity】问题记录:Some objects were not cleaned up when closing the scene
  19. Fatal signal 11 (SIGSEGV) at 0x00000014 (code=1), thread 29925 (cloud.diversion)
  20. 深入详解python高级特性——函数柯里化(Currying)与反柯里化

热门文章

  1. 架构师之路--康奈尔笔记法
  2. 3dmax如何快速查找丢失贴图,并根据贴图快速找到对应物体
  3. Excel中关于数组函数的研究
  4. fragment中高德地图定位
  5. Python拟合SHARP红外测距传感器相关数据
  6. 数学建模竞赛大汇总,别再被野鸡竞赛坑啦
  7. 比特率和波特率的区别
  8. 信度spss怎么做_SPSS进行问卷量表信度检验(详细操作过程及结果分析)
  9. DELMIA软件:机器人与行走轴联动实现长焊缝弧焊焊接虚拟仿真
  10. 联想拯救者y7000p加内存条_内存、硬盘不够用?手把手教你升级联想拯救者Y7000P...