路径名称
//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);//鎬у懡鐢熷懡浣垮�
}
}