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. 不可思议的纯 CSS 滚动进度条效果

    结论先行,如何使用 CSS 实现下述滚动条效果? 就是顶部黄色的滚动进度条,随着页面的滚动进度而变化长短. 在继续阅读下文之前,你可以先缓一缓.尝试思考一下上面的效果或者动手尝试一下,不借助 JS , ...

  2. 使用dom4j 解析xml文件

    //使用dom4j 解析xml文件,升级版,dom4j是对dom的封装 //重点 package com.offcn.utils; import java.io.File; import java.i ...

  3. 解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope

    React-Native 开发的项目,Android 方面没有任何问题,IOS 就是无法跑起来,报错信息如下: mac 10.14.4 xcode 10.2.1 error Failed to bui ...

  4. 使用.Net Core+IView+Vue集成上传图片功能

    最近的项目里有上传图片的功能,当然这个功能在项目里是必须要有的,那么目前这个项目是使用完全的前后端分离,在选择文件上传的组件中还是选择了全面支持Vue的IView,任何上传图片都是通过HTTP请求,服 ...

  5. MyWebViewDemo【封装Webview常用配置和选择文件、打开相机、录音、打开本地相册的用法】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装webview的常用配置和选择文件.打开相机.录音.打开本地相册的用法.[如果想要使用简单的预览功能,可以参考<MyBri ...

  6. Kubernetes的DaemonSet(上篇)

    背景 静儿作为美团容器化团队HULK的一员,经常需要和Kubernetes(k8s)打交道.第一次登陆node(宿主机)的时候,发现连续登陆几台都看到了Prometheus-Node-Exporter ...

  7. MVC中使用Ninject依赖注入

    在.NET MVC中使用Ninject注入,主要分为以下几步: 使用NuGet包添加Ninject引用,我添加的是目前最新版本3.34 在App_Start文件夹下,创建NinjectControll ...

  8. SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用

    为什么要使用分布式系统? 容错 减少延迟/提高性能 可用性 负载均衡 总而言之,其实目的只有一个,”用户体验“. 什么是分布式系统? 分布式系统是由使用分发中间件连接的自治计算机组成的网络.它们有助于 ...

  9. Java 在PDF中添加水印——文本/图片水印

    水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下Java示例,将分别使用insertTextWatermark(PdfPageBas ...

  10. java面试记录

    怎么确保一个集合不能被修改   ArrayList<String> list = new ArrayList<>();list.add("x");Colle ...