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. 20190429 - 如何访问 macOS 的 httpd、mysql 等服务

    问题:在局域网,通过其它机器访问 macOS 上的服务时,提示拒绝. 解决:将 macOS 防火墙 80.3306 端口打开. macOS 内置防火墙,也许开启了防火墙.Icefloor 是一个老牌的 ...

  2. ASP.NET Aries 高级开发教程:主题样式及多语言(标签化控制)

    前言: 最新ASP.NET Aries升级到V5.2.0以上之后,之前的样式和多语言机制,有了重大的升级机制,这篇就简单介绍一下. 1.控制开关 在配置维护那里,新增了两个控制项: 2.如何添加主题 ...

  3. .NET 机器学习生态调查

    机器学习是一种允许计算机使用现有数据预测未来行为.结果和趋势的数据科学方法. 使用机器学习,计算机可以在未显式编程的情况下进行学习.机器学习的预测可以使得应用和设备更智能. 在线购物时,机器学习基于历 ...

  4. Java基础知识回顾之五 ----- 多线程

    前言 在上一篇文章中,回顾了Java的集合.而在本篇文章中主要介绍多线程的相关知识.主要介绍的知识点为线程的介绍.多线程的使用.以及在多线程中使用的一些方法. 线程和进程 线程 表示进程中负责程序执行 ...

  5. java基础(十)-----Java 序列化的高级认识

    将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ...

  6. The openssl extension is required for SSL/TLS protection but is not available

    今天使用composer update发现报错:The openssl extension is required for SSL/TLS protection but is not availabl ...

  7. 【MySQL】MySQL的执行计划及索引优化

    我们知道一般图书馆都会建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的. ...

  8. Sublime Text3介绍和插件安装——基于Python开发

    Subime编辑器是一款轻量级的代码编辑器,是收费的,但是可以无限期使用.官网下载地址:https://www.sublimetext.com. Sublime Text3支持语言开发种类多样,几乎可 ...

  9. typescript中的泛型

    泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能. 在像C#和Ja ...

  10. C++ 子类继承父类纯虚函数、虚函数和普通函数的区别

    C++三大特性:封装.继承.多态,今天给大家好好说说继承的奥妙 1.虚函数: C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现.子类可以重写父类的虚函数实现子类 ...