Java每周一记(4)

目录

            IO流

1.数据源

2.流

3.File

文件名、路径名   文件状态  文件长度  创建新文件、删除文件  创建目录 下级名称 下级File 根路径


IO流

1.数据源

提供数据的原始媒介。常见的数据源有:数据库、文件、其他程序、内存、网络连接、IO设备。

数据源分为:源设备、目标设备。

源设备:为程序提供数据,一般对应输入流。 目标设备:程序数据的目的地,一般对应输出流。

2.流

流是一个抽象、动态的概念,是一连串连续动态的数据集合。

 

流的分类:

1)按流的方向分

输入流:数据流向是数据源到程序(以InputStream、Reader结尾的流)。

输出流:数据流向是程序到目的地(以OutPutStream、Writer结尾的流)。

2)按处理的数据单元分

字节流:以字节为单位获取数据,命名上以Stream结尾的流一般是字节流,如FileInputStream、FileOutputStream。

字符流:以字符为单位获取数据,命名上以Reader/Writer结尾的流一般是字符流,如FileReader、FileWriter。

3)按处理对象不同分类

节点流:可以直接从数据源或目的地读写数据,如FileInputStream、FileReader、DataInputStream等。

处理流:不直接连接到数据源或目的地,是”处理流的流”。通过对其他流的处理提高程序的性能,如BufferedInputStream、BufferedReader等。处理流也叫包装流。

节点流处于IO操作的第一线。

3.File

import java.io.File;

public class TestPath {
	public static void main(String[] args) {
		//   \ /名称分隔符 separator
		String path = "C:/Users/华为/Desktop/ball.png";
		System.out.println(path);
		System.out.println(File.separatorChar);  //    /
		//建议  1. /      2.常量拼接
		path = "C:"+File.separator+"Users"+File.separator+"华为"+File.separator+"Desktop"+File.separator+"ball.png";
		System.out.println(path);  //C:\Users\华为\Desktop\ball.png
	}

}

构造器:

import java.io.File;

public class TestPath02 {
	public static void main(String[] args) {
		// 构建File对象
		//第一种
		String path = "C:/Users/华为/Desktop/ball.png";  
		File src = new File(path);
		System.out.println(src.length());  
		//第二种
		src = new File("C:/Users/华为/Desktop","ball.png");  
		System.out.println(src.length());
		src = new File("C:/Users/华为","Desktop/ball.png");
		System.out.println(src.length());
		//第三种
		src = new File(new File("C:/Users/华为/Desktop"),"ball.png");
		System.out.println(src.length());
		
		/*
		 * 相对路径与绝对路径
		 * 1)存在盘符:绝对路径
		 * 2)不存在盘符:相对路径
		 */
		//绝对路径
		File src1 = new File(path);
		System.out.println(src1.getAbsolutePath());//C:\Users\华为\Desktop\ball.png
		//相对路径 
		System.out.println(System.getProperty("user.dir"));//用户目录   C:\Users\华为\Desktop
		src1 = new File("ball.png");
		System.out.println(src1.getAbsolutePath());//C:\Users\华为\Desktop\ball.png
	}

}

文件名、路径名

import java.io.File;

public class TestFile {
	public static void main(String[] args) {
		File src = new File("C:\\Users\\华为\\Desktop\\ball.png");
		//基本信息
		System.out.println("名称:"+src.getName());
		System.out.println("路径:"+src.getPath());
		System.out.println("绝对路径:"+src.getAbsolutePath());
		System.out.println("父路径:"+src.getParent());
		System.out.println("父对象:"+src.getParentFile().getName());
		System.out.println("-------------");
		src = new File("ball.png");
		System.out.println("父路径:"+src.getParent());
	}

}

 运行结果:

 文件状态

import java.io.File;

public class TestFile02 {
	public static void main(String[] args) {
		File src = new File("C:/Users/华为/Desktop/ball.png"); 
		System.out.println("是否存在:"+src.exists());  //true
		System.out.println("是否文件:"+src.isFile());  //true
		System.out.println("是否文件夹:"+src.isDirectory());   //false
		System.out.println("----------");
		src = new File("C:/Users/华为/Desktop");
		System.out.println("是否存在:"+src.exists());  //true
		System.out.println("是否文件:"+src.isFile());  //false
		System.out.println("是否文件夹:"+src.isDirectory()); //true
		System.out.println("----------");
		src = new File("ball.png");
		System.out.println("是否存在:"+src.exists());  //true
		System.out.println("是否文件:"+src.isFile());  //true
		System.out.println("是否文件夹:"+src.isDirectory()); //false
		//文件状态
		src = new File("xxx");
		if(!src.exists()) {
			System.out.println("文件不存在");
		}else {
			if(src.isFile()) {
				System.out.println("文件操作");
			}else {
				System.out.println("文件夹操作");
			}
		}
	}

}

文件长度:   length():字节数

import java.io.File;

public class TestFile03 {
	public static void main(String[] args) {
		File src = new File("C:/Users/华为/Desktop/ball.png");
		System.out.println("长度:"+src.length());   //2725
		src = new File("C:/Users/华为/Desktop");
		System.out.println("长度:"+src.length());  //28672
	}

}

创建新文件、删除文件

注:con com3.....操作系统的设备名,不能正确创建

import java.io.File;
import java.io.IOException;

public class TestFile04 {
	public static void main(String[] args) throws IOException {
		File src = new File("C:/Users/华为/Desktop/l.txt");
		boolean flag = src.createNewFile();
		System.out.println(flag);  //true 不存在才创建,存在创建成功,创建的不是文件夹
		flag = src.delete();     //删除已经存在的文件
		System.out.println(flag);
	}

}

创建目录以及列出下级

mkdir():确保上级目录存在,不存在创建失败

mkdir():上级目录可以不存在,不存在一同来创建

list():列出下级名称      listFiles():列出下级File对象    listRoots():列出盘符

import java.io.File;

public class TestDir {
	public static void main(String[] args) {
			File dir = new File("C:/Users/华为/Desktop/dir/test");
			//创建目录
			boolean flag = dir.mkdir();
			System.out.println(flag);  //false  dir不存在
			flag = dir.mkdirs();
			System.out.println(flag);  //true
			
			File dir2 = new File("C:/Users/华为/Desktop/WL/java/3.L");
			//列出下级名称
			String[] subNames = dir2.list();
			for(String s:subNames) {
				System.out.println(s);
			}
			//下级对象
			File[] subFiles = dir2.listFiles();
			for(File s:subFiles) {
				System.out.println(s.getAbsolutePath());
			}
			//所有盘符
			File[] roots = dir.listRoots();
			for(File r:roots) {
				System.out.println(r.getAbsolutePath());
			}
	}

}

打印子孙级 

import java.io.File;

public class TestDir2 {
	public static void main(String[] args) {
		File src = new File("C:/Users/华为/Desktop/WL/java/3.L");
		printName(src,0);
	}
	//打印子孙级目录和文件的名称
	public static void printName(File src,int deep) {
		//控制前面层次
	    for(int i=0;i<deep;i++) {
	    	System.out.print("-");
	    }
	    //打印名称
		System.out.println(src.getName());
		if(null==src||!src.exists()) {  //递归头
			return;
		}else if(src.isDirectory()){//目录
			for(File s:src.listFiles()) {
				printName(s,deep+1);    //递归体
			}
		}
	}

}

统计文件夹大小

import java.io.File;

public class TestDir3 {
	public static void main(String[] args) {
		File src = new File("C:/Users/华为/Desktop/WL/java/3.L");
		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);
				}
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W┉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值