IO基础 File String

路径名称

//io 1  路径名称
import java.io.File;

public class TestIO1 {
	public static void main(String[] args) {
		String path = "D:\\abc\\def\\蕾姆.jpg";

		System.out.println(path);
		// 建议
		// 1./
		path = "D:/abc/def/蕾姆.jpg";
		System.out.println(path);
		// 2.常量拼接
		path = "D:" + File.separator + "abc" + File.separator + "def" + File.separator + "蕾姆.jpg";
		System.out.println(path);

		/*
		 * D:\abc\def\蕾姆.jpg 
		 * D:/abc/def/蕾姆.jpg 
		 * D:\abc\def\蕾姆.jpg
		 * 
		 */

	}
}

File 构造器

import java.io.File;

//测试File 构造器
public class TestIO2 {//相对 绝对 父路径
	public static void main(String[] args) {
		// 构建File对象
		String path = "D:/Program Files/eclipse/workspace/iotest/REAL.jpg";

		//1 构建File对象 
		/*
		 * File(String pathname) 创建一个新的 File实例通过将给定路径名字符串转换为抽象路径名。
		 */
		File src = new File(path);
		System.out.println(src.length());// 73978
		//2 构建File对象 父子拼接
		/*
		 * File(File parent, String child) 
		 * 创建一个新的 File实例从父母孩子抽象路径名和路径名字符串。
		 * File(String parent, String child) 
		 * 创建一个新的 File实例从一个父路径名字符串和一个孩子路径名字符串。
		 */
		src = new File("D:/Program Files/eclipse/workspace/iotest","REAL.jpg");
		System.out.println(src.length());// 73978
		src = new File("D:/Program Files/eclipse","workspace/iotest/REAL.jpg");
		System.out.println(src.length());// 73978
		//3 构建File对象 父对象子名称
		src = new File(new File("D:/Program Files/eclipse/workspace/iotest"),"REAL.jpg");
		
		
		//相对路径与绝对路径
		/*1.存在盘符 绝对路径
		2.不存在盘符 相对路径*/  // 当前目录user.dir
		//绝对路径
		//File src = new File(path);
		System.out.println(src.getAbsolutePath());//D:\Program Files\eclipse\workspace\iotest\REAL.jpg
		
		//相对路径
		
		src = new File("timg (3).jpg");
		System.out.println(src.getAbsolutePath());//D:\Program Files\eclipse\workspace\iotest\REAL.jpg
		System.out.println(System.getProperty("user.dir"));//了解即可//D:\Program Files\eclipse\workspace\iotest
		
		//构建一个不存在的文件
		src = new File("D:aofj/ajsfka/afnskjv.txt");
		System.out.println(src);//D:aofj\ajsfka\afnskjv.txt
		
	}
}

路径的一些信息

import java.io.File;

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月11日 下午11:26:33
* 类说明
* 
* getName():名称
* getPath():构建相对路径 返回相对 否则返回绝对
* getAbsolutePath():返回绝对
* getParent():上路径 没有返回null
* 
*/
public class TestIO3 {
	public static void main(String[] args) {
		File src = new File("D:/Program Files/eclipse/workspace/iotest","REAL");
		//基本信息
		System.out.println("名称"+src.getName());//路径REAL
		System.out.println("路径"+src.getPath());//路径D:\Program Files\eclipse\workspace\iotest\REAL
		System.out.println("绝对名称"+src.getAbsolutePath());//绝对名称D:\Program Files\eclipse\workspace\iotest\REAL
		System.out.println("父路径"+src.getParent());//父路径D:\Program Files\eclipse\workspace\iotest
		System.out.println("父对象"+src.getParentFile());//父路径D:\Program Files\eclipse\workspace\iotest
		
		
	}
}

确认目标路径是否存在 确认路径是文件还是文件夹

import java.io.File;

/**
 * @author 黑羽-孤高之银风
 * @version 创建时间:2019年6月11日 下午11:50:49 类说明 文件状态 1.不存在:exict 2.isFile
 *          3.isDirectory
 */
public class TestIO4 {
	public static void main(String[] args) {
		File src = new File("D:/Program Files/iotest/REAL.jpg");
		System.out.println(src.getAbsolutePath());// D:\Program
													// Files\iotest\REAL.jpg
		System.out.println("是否存在" + src.exists());// 是否存在false
		System.out.println("是否文件" + src.isFile());// 是否文件false
		System.out.println("是否文件夹" + src.isDirectory());// 是否文件夹false

		System.out.println("==================");
		src = new File("D:/Program Files/eclipse/workspace/iotest");
		System.out.println(src.getAbsolutePath());// D:\Program
													// Files\eclipse\workspace\iotest
		System.out.println("是否存在" + src.exists());// 是否存在true
		System.out.println("是否文件" + src.isFile());// 是否文件false
		System.out.println("是否文件夹" + src.isDirectory());// 是否文件夹true

		System.out.println("==================");
		src = new File("D:/Program Files/eclipse/workspace/iotest/REAL.jpg");
		System.out.println(src.getAbsolutePath());// D:\Program
													// Files\eclipse\workspace\iotest\REAL.jpg
		System.out.println("是否存在" + src.exists());// 是否存在true
		System.out.println("是否文件" + src.isFile());// 是否文件true
		System.out.println("是否文件夹" + src.isDirectory());// 是否文件夹false
		// 文件状态
		src = new File("XXX");
		if (null == src || !src.exists()) {
			System.out.println("文件不存在");
		} else if (src.isFile()) {
			System.out.println("文件存在");
		} else {
			System.out.println("文件夹操作");
		}

	}
}

确认目标路径文件长度 文件夹长度为零

import java.io.File;

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月12日 上午12:02:42
* 
* 其他信息
* length():字节数
* 
*/
public class TestIO5 {
	public static void main(String[] args) {
		File src = new File("D:/Program Files/eclipse/workspace/iotest","REAL.jpg");
		System.out.println("长度:"+src.length());//长度:73978
		
		src = new File("D:/workspace/iotest","REAL.jpg");
		System.out.println("长度:"+src.length());//长度:0
		
		src = new File("D:/iotest","REAL.jpg");
		System.out.println("长度:"+src.length());//长度:0
	
	}
}

创建删除文件

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

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月12日 上午12:06:55
* createNewFile()   //不存在创建成功 已存在创建失败
* delete()   //删除存在的文件
*/
public class TestIO6 {
	public static void main(String[] args) throws IOException {
		File src = new File("D:/Program Files/eclipse/workspace/iotest/REAL.jpg");
		boolean flag = src.createNewFile();
		System.out.println(flag);//false 已存在创建失败
		
		src = new File("D:/Program Files/eclipse/workspace/iotest222");
		flag = src.createNewFile();
		System.out.println(flag);//true 不存在创建成功  但他只是一个空的没有后缀的文件名
		
		src = new File("D:/Program Files/eclipse/workspace/iotest222");
		flag=src.delete();
		System.out.println(flag);//true 删除成功
		
		//补充 con con3...操作系统的设备名,不能正确创建
		src = new File("D:/Program Files/eclipse/workspace/iotest/con");
		src.createNewFile();
	}
}

创建文件夹

import java.io.File;

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月12日 上午12:26:17
* 1.mkdir():确保上级目录存在,不存在创建失败
* 2.mkdirs():上级目录可以不存在,不存在一同来创建  已创建过 则创建失败
*/
public class DirTest1 {
	public static void main(String[] args) {
		File dir = new File ("D:java/IO/dir/test");
		//创建目录
		boolean flag = dir.mkdir();
		System.out.println(flag);//false 不存在上级目录
		flag = dir.mkdirs();
		System.out.println(flag);//true 
		dir = new File("D:java/IO/dir/test2");
		flag = dir.mkdir();
		System.out.println(flag);//true 存在上级目录 且没创建过
		
	}
}

遍历文件

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月12日 上午12:34:31
* 列出下一级
* 1.list():列出下级名称
* 2.listFile():列出下级File对象
* 3.listRoots: 列出所有盘符 了解即可
*/
public class DirTest2 {
	public static void main(String[] args) {
		File dir = new File("D:/Program Files/eclipse/workspace/iotest");
		
		//列出下级名称 list
		String[] subNames = dir.list();
		for(String s:subNames){
			System.out.println(s);//.classpath  .project  .settings  bin java  REAL.jpg  src
		}	
		//列出下级对象 listFiles()
		File[] subFiles = dir.listFiles();
		for (File s : subFiles) {
			System.out.println(s.getAbsolutePath());
			/*D:\Program Files\eclipse\workspace\iotest\.classpath
			D:\Program Files\eclipse\workspace\iotest\.project
			D:\Program Files\eclipse\workspace\iotest\.settings
			D:\Program Files\eclipse\workspace\iotest\bin
			D:\Program Files\eclipse\workspace\iotest\java
			D:\Program Files\eclipse\workspace\iotest\REAL.jpg
			D:\Program Files\eclipse\workspace\iotest\src*/
		}
		
		//所有盘符  
		File[] roots = dir.listRoots();
		for (File r : roots) {
			System.out.println(r.getAbsolutePath());
		}
		/*  3个盘
		C:\
		D:\
		E:\
		*/
		
	}
}

递归回忆

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月12日 上午12:50:17
* 递归: 方法自己调用自己
* 递归头: 何时结束递归
* 递归体: 重复调用
* 
*/
public class DirTest3 {
	public static void main(String[] args) {
		printTen(1);
	}
	//打印1-10的数
	public static void printTen(int n) {
		if (n>10) {//递归头:结束递归
			return;
		}System.out.println(n);
		printTen(n+1);//递归体方法自己调用自己
	}
	
}

打印子孙级目录和文件名称

import java.io.File;

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月12日 上午12:55:53
* 打印子孙级目录和文件名称
*/
public class DirTest4 {
	
	public static void main(String[] args) {
		File src = new File("D:/Program Files/eclipse/workspace/iotest");
		printName(src,0);
			
	}
	
	
	//打印子孙级目录和文件名称
	public static void printName(File src,int deep) {//deep 只是为了效果而出的变量
		//控制前面层次
		for (int i = 0; i < deep; i++) {
			System.out.print("-");//这个for循环也只是为了效果
		}
		//打印名称
		System.out.println(src.getName());//iotest
		if (null==src||!src.exists()) {//递归头
			return;
		}else if (src.isDirectory()) {//目录
			for (File s: src.listFiles()) {
				printName(s,deep+1);//递归体
			}
		}
		/*
		-.classpath
		-.project
		-.settings
		--org.eclipse.jdt.core.prefs
		-bin
		--com
		---shsxt
		----io
		-----DirTest1.class
		-----DirTest2.class
		-----DirTest3.class
		-----DirTest4.class
		-----TestIO1.class
		-----TestIO2.class
		-----TestIO3.class
		-----TestIO4.class
		-----TestIO5.class
		-----TestIO6.class
		-java
		--IO
		---dir
		----test
		----test2
		-REAL.jpg
		-src
		--com
		---shsxt
		----io
		-----DirTest1.java
		-----DirTest2.java
		-----DirTest3.java
		-----DirTest4.java
		-----TestIO1.java
		-----TestIO2.java
		-----TestIO3.java
		-----TestIO4.java
		-----TestIO5.java
		-----TestIO6.java
		*/
		
	}
}

遍历文件夹大小

import java.io.File;

/**
 * @author 黑羽-孤高之银风
 * @version 创建时间:2019年6月12日 上午12:55:53 统计文件夹大小
 */
public class DirTest5 {
	public static void main(String[] args) {
		File src = new File("D:/Program Files/eclipse/workspace/iotest");
		count(src);
		System.out.println(len);//99255 字节
	}
	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);
				}
			}
		}
	}
}

使用面向对象统计文件夹大小

import java.io.File;

/**
 * @author 黑羽-孤高之银风
 * @version 创建时间:2019年6月12日 上午1:21:06 
 * 使用面向对象统计文件夹大小
 */
public class DirCount {
	// 大小
	private long len;
	// 文件夹路径
	private String path;
	// 源
	// 还可以添加测试文件个数 和 文件夹个数
	private File src;

	public DirCount(String path) {
		this.path = path;
		this.src = new File(path);
		count(this.src);
	}

	// 统计大小
	private void count(File src) {
		// 获取大小
		if (null != src && src.exists()) {
			if (src.isFile()) {// 大小
				len += src.length();
			} else {// 子孙级
				for (File s : src.listFiles()) {
					count(s);
				}
			}
		}
	}

	// 测试代码
	public static void main(String[] args) {
		DirCount dir = new DirCount("D:/Program Files/eclipse/workspace/iotest");
		System.out.println(dir.getLen());// 101621

		DirCount dir2 = new DirCount("D:/Program Files/eclipse/workspace/iotest/src");
		System.out.println(dir2.getLen());// 12938
	}

	public long getLen() {
		return len;
	}

	public void setLen(long len) {
		this.len = len;
	}

}

字符编码

import java.io.UnsupportedEncodingException;

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月12日 上午8:33:48
* 编码:字符串>>字节
*/
public class ContentEncode {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String msg="性命生命使命a";
		//编码:字节数组
		byte[] datas = msg.getBytes();//默认使用工程的字符集
		System.out.println(datas.length);//19 utf-8 3*6+1
		
		//编码:其他字符集
		datas = msg.getBytes("UTF-16LE");
		System.out.println(datas.length);//14
		
		datas = msg.getBytes("GBK");
		System.out.println(datas.length);//13
		
	}
	
}

乱码原因

import java.io.UnsupportedEncodingException;

/**
* @author 黑羽-孤高之银风
* @version 创建时间:2019年6月12日 上午8:45:35
* 乱码原因
*/
public class ContentDecode {
	public static void main(String[] args) throws UnsupportedEncodingException {
		
		String msg="性命生命使命a";
		//编码:字节数组
		byte[] datas = msg.getBytes();//默认使用工程的字符集
		
		//解码:字符串 String(byte[] bytes, int offset, int length, String charsetName) 
		//构建了一种新的 String通过解码指定的字节数组使用指定的字符集。 
		msg = new String(datas,0,datas.length,"utf-8");
		System.out.println(msg);//性命生命使命a
		
		//乱码:
		//字节数不够
		msg = new String(datas,0,datas.length-2,"utf-8");
		System.out.println(msg);//性命生命使�
		
		//乱码:
		//字节数不够
		msg = new String(datas,0,datas.length-2,"gbk");
		System.out.println(msg);//鎬у懡鐢熷懡浣垮�
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值