1、统计文件夹大小

 package cn.demo02;

 import java.io.File;

 /**
* @Classname DirTest03
* @Description TODO
* @Date 2019-4-25 10:48
* @Created by Administrator
* 统计文件夹大小
*/
public class DirTest03 {
public static void main(String[] args) {
File src = new File("F:/Java/Java-");
count(src);
System.out.println(len);
}
private static long len = 0;
public static void count(File src){
//获取大小
if (null!=src&&src.exists()){
if (src.isFile()){
//是否是文件,文件才有大小
len+=src.length();
}else {
//如果是文件夹,输出子孙级文件
for (File s:src.listFiles()){
count(s);
}
}
}
} }

运行结果图

2、使用面向对象,统计文件夹的大小

 package cn.demo02;

 import java.io.File;

 /**
* 使用面向对象:统计文件夹的大小
*
* @Classname DirTest04
* @Description TODO
* @Date 2019-4-25 11:10
* @Created by Administrator
*/
public class DirTest04 {
//大小
private long len;
//文件夹
private String path;
//文件的个数
private int fileSize;
//文件夹的个数
private int dirSize;
//源
private File src; public DirTest04(String path) {
this.path = path;
this.src = new File(path);
count(this.src);
} public static void main(String[] args) {
DirTest04 dir = new DirTest04("F:/Java/Java-");
System.out.println("大小:"+dir.getLen()+"\n"+"文件夹的个数:"+dir.getDirSize()+"\n"+
"文件的个数:"+dir.getFileSize());
} public long getLen() {
return len;
} public int getFileSize() {
return fileSize;
} public int getDirSize() {
return dirSize;
} //统计大小
private void count(File src) {
//如果是文件则获取大小
if (null != src && src.exists()) {
if (src.isFile()){
len += src.length();
this.fileSize++;
} else {
this.dirSize++;
//如果是文件夹,则输出子孙级文件
for (File s : src.listFiles()) {
count(s);
}
}
}
}
}

运行结果图

3、第一个IO程序:理解操作步骤

 package cn.demo02;

 import java.io.*;

 /**
* 第一个程序:理解操作步骤
* 1、创建源
* 2、选择流
* 3、操作
* 4、释放资源
*
* @Classname IO_Demo01
* @Description TODO
* @Date 2019-4-25 15:56
* @Created by Administrator
*/
public class IO_Demo01 {
public static void main(String[] args) {
//1、创建源
File src = new File("F:/Java/test018/demo01/abc.txt");
//2、选择流
InputStream is = null;
try {
is = new FileInputStream(src);
//3、操作(读取)
int temp;
while ((temp = is.read()) != -1) {
System.out.print((char) temp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//释放资源
try {
if (null != is) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

运行结果图

4、文件字节流

 package cn.demo02;

 import java.io.*;

 /**
* @Classname IO_Demo02
* @Description TODO
* @Date 2019-4-25 16:20
* @Created by Administrator
*/
public class IO_Demo02 {
public static void main(String[] args) {
//创建源
File src = new File("F:/Java/test018/demo01/abc.txt");
//选择流
InputStream is = null;
try {
is=new FileInputStream(src);
//操作(分段读取)
byte[] car = new byte[3]; //缓冲容器
int len = -1; //接受长度
while ((len = is.read(car))!=-1){
//字节数组--》字符串(解码)
String str = new String(car,0,len);
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (null!=is){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

运行结果图

5、输出流OutputStream

 package cn.demo02;

 import jdk.internal.util.xml.impl.Input;

 import java.io.*;

 /**
* 文件字节输出流
* 1、创建源
* 2、选择流
* 3、操作(写出内容)
* 4、释放资源
*
* @Classname IO_Demo03
* @Description TODO
* @Date 2019-4-25 18:10
* @Created by Administrator
*/
public class IO_Demo03 {
public static void main(String[] args) {
//1、创建源
File desk = new File("desk.txt");
//2、选择流
OutputStream os = null;
try {
os = new FileOutputStream(desk,true);
//3、操作(写出)
String msg = "IO is easy!";
byte[] datas = msg.getBytes(); //字符串--》字符串数组(编码)
os.write(datas,0,datas.length);
os.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != os) {
//4、释放资源
try {
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}

运行结果图

JAVA进阶23的更多相关文章

  1. java进阶(23)--List接口

    一.基本概念 1.有序可重复 2.有下标 3.包含ArraList.LinkedList.Vector   二.List中特有的方法 且常用 (以下军均为数组通用方法) 1.void add(int ...

  2. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  3. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  4. Java进阶之路

    Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...

  5. Java 进阶7 并发优化 5 并发控制板方法

    Java 进阶7 并发优化 5 并发控制板方法 20131114 前言:          Java 中多线程并发程序中存在线程安全的问题,之前学习 Java的同步机制,掌握的同步方法只有一种就是使用 ...

  6. Java进阶2 数组内存和对象的内存管理知识

    Java进阶2 数组内存和对象的内存管理知识 20131028 前言: 在面试的时候,如果是Java的编程语言,也许你认为没有什么可以问的,只能够说明你对于Java了解的太浅了,几乎就是两个星期的节奏 ...

  7. java进阶视频分享

    更多资源和教程请关注公众号:非科班的科班. 如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力 课程目录介绍 01.开班仪式02.并发编程专题之多线程基础03.并发编程专题之Java内存模 ...

  8. [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

    [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VS ...

  9. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

随机推荐

  1. Kafka Ecosystem(Kafka生态)

    http://kafka.apache.org/documentation/#ecosystem https://cwiki.apache.org/confluence/display/KAFKA/E ...

  2. 使用 Vue 开发 scrollbar 滚动条组件

    Vue 应该说是很火的一款前端库了,和 React 一样的高热度,今天就来用它写一个轻量的滚动条组件: 知识储备:要开发滚动条组件,需要知道知识点是如何计算滚动条的大小和位置,还有一个问题是如何监听容 ...

  3. 【深度学习篇】--神经网络中的调优一,超参数调优和Early_Stopping

    一.前述 调优对于模型训练速度,准确率方面至关重要,所以本文对神经网络中的调优做一个总结. 二.神经网络超参数调优 1.适当调整隐藏层数对于许多问题,你可以开始只用一个隐藏层,就可以获得不错的结果,比 ...

  4. 深入浅出一下Java的HashMap

    在平常的开发当中,HashMap是我最常用的Map类(没有之一),它支持null键和null值,是绝大部分利用键值对存取场景的首选.需要切记的一点是——HashMap不是线程安全的数据结构,所以不要在 ...

  5. .Net Webapi SignalR与微信小程序的交互

    .Net Webapi SignalR与微信小程序的交互 一.SignalR与Webapi 1.SignalR的安装: Signalr与跨域仅需要安装两个开源库 Microsoft.Owin.Cors ...

  6. Kafka、ActiveMQ、RabbitMQ、RocketMQ 区别以及高可用原理

    为什么使用消息队列 其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么? 面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务 ...

  7. Vmware虚拟机中CentOS7与Docker安装图文教程

    1.安装VMware 下载一个软件安装: 2.新建一个虚拟机 等待自动安装完成 配置系统语言: 配置系统时间: 配置系统键盘: 语言支持: 默认自动使用安装源: 配置软件环境,需要及时添加的软件,这里 ...

  8. 微软开发者大会:VS 2019 Preview 发布;Windows UX 主要技术开源

    美国当地时间12月4日,微软正式举行 Microsoft Connect(); 2018 开发者大会,本次大会的 slogan 是"Build the apps of tomorrow, t ...

  9. 并发系列(5)之 Future 框架详解

    本文将主要讲解 J.U.C 中的 Future 框架,并分析结合源码分析其内部结构逻辑: 一.Future 框架概述 JDK 中的 Future 框架实际就是 Future 模式的实现,通常情况下我们 ...

  10. springcloud情操陶冶-springcloud config server(一)

    承接前文springcloud情操陶冶-springcloud context(二),本文将在前文基础上浅析下ConfigServer的工作原理 前话 根据前文得知,bootstrapContext引 ...