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. python3 生成器初识 NLP第五条

    话不多说,先把第五条抄一遍: 五,沟通的意义在于对方的回应 沟通没有对与错,只有“有效果”或者“没有效果”之分. 自己说得多“对”没有意义,对方收到你想表达的讯息才是沟通的意义. 因此自己说什么不重要 ...

  2. SUSE12SP3-Zookeeper安装

    直接使用root账号 1.zookeeper安装 将zookeeper-3.4.13.tar.gz安装包放置指定目录 sudo tar -zxvf zookeeper-3.4.13.tar.gz -C ...

  3. #Java学习之路——基础阶段二(第五篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  4. 【Caffe篇】--Caffe solver层从初始到应用

    一.前述 solve主要是定义求解过程,超参数的 二.具体 #往往loss function是非凸的,没有解析解,我们需要通过优化方法来求解. #caffe提供了六种优化算法来求解最优参数,在solv ...

  5. 关闭 Mac 拼写自动纠正与横线转换

    如果你是个程序员, 如果你恰好用 mac 自带的 notes 来做笔记, 很大可能性, 你会在里面贴代码, 但是, Mac 的拼写检查和自动纠正功能,会把代码变成你不想要的样子, 比如, 它会为你首字 ...

  6. KnockOut绑定之Click绑定

    example(click绑定) Click绑定对DOM元素添加一个函数,当DOM元素被点击的时候调用.在button,input 或者a标签中常用,但其实他适用于任何可见的DOM元素. 每当你点击b ...

  7. ASP.NET Core开发者指南

    ASP.NET Core开发者指南 2019年ASP.NET Core开发者指南: 你可以在下面找到一张图,该图展示了你可以选取的路径及你想学习的库,从而成为一名 ASP.NET Core 开发者.“ ...

  8. seg:NLP之正向最大匹配分词

    已迁移到我新博客,阅读体验更佳seg:NLP之正向最大匹配分词 完整代码实现放在我的github上:click me 一.任务要求 实现一个基于词典与规则的汉语自动分词系统. 二.技术路线 采用正向最 ...

  9. DS控件库 DS标签的另类用法之折叠展开

    某些场合下,可以通过动态设置DS标签的文本内容来输出不同的显示效果,以下是示例. 示例中的素材   示例资源文本 String1="<linkimg=E1><b>&l ...

  10. 一个.Net网站的成长历程

    引言: 时光匆匆,如白驹过隙,又一次来到了这个节点,回首逝去的日子,有收获也有遗憾... 年底的日子总是那么悠闲,趁着这些悠闲的时光,整理一下自己平时在工作中的收获. 之所以取这个标题呢一来是为了让自 ...