前言
IO流技术在java的学习中也是相当重要的一个部分,下面是我画的IO相关的知识点
文件操作
- path–>路径的书写
1 用斜杠的方式,但是需要转义
String path = "C:\\Users\\SGYZ\\Desktop\\10种排序算法.png";
2 用反斜杠的方式–>推荐使用这一种方式
String path = "C:/Users/SGYZ/Desktop/10种排序算法.png";
3 就是字符串拼接方式了
src = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/", "4.jpg");
常用的一些操作
- 打开文件
import java.io.File;
public class FileDemo01 {
public static void main(String[] args) {
String path = "C:/Users/SGYZ/IdeaProjects/IO流技术/4.jpg";
//创建文件对象
File src = new File(path);
System.out.println(src.length());
//路径只要拼的出来就行
src = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/", "4.jpg");
System.out.println(src.length());
}
}
运行结果:
656150
656150
- 绝对路径、相对路径
public static void main(String[] args) {
String path ="D:/java300/IO_study01/IO.png";
//绝对路径
File src = new File(path);
System.out.println(src.getAbsolutePath());
//相对路径
System.out.println(System.getProperty("user.dir"));
src = new File("IO.png");
System.out.println(src.getAbsolutePath());
//构建一个不存在的文件
src = new File("aaa/IO2.png");
System.out.println(src.getAbsolutePath());
}
}
- 获取文件的一些属性–>文件名,父路径
public class FileDemo03 {
public static void main(String[] args) {
File src = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/src/4.jpg");
//基本信息
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());
}
- 获取文件的状态
import java.io.File;
import java.io.IOException;
/**
*
* 文件状态
*/
public class FileDemo04 {
public static void main(String[] args) throws IOException {
File src = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/src/4.jpg");
System.out.println("是否存在"+src.exists());
System.out.println("是否文件"+src.isFile());
System.out.println("是否文件夹"+src.isDirectory());
//创建文件 不能创建文件夹
File flie = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/src/1.txt");
boolean flag = flie.createNewFile();
System.out.println(flag);
flag = flie.delete();
}
}
运行结果:
是否存在false
是否文件false
是否文件夹false
true
- 打印目录文件名
public class FlieDemo05 {
public static void main(String[] args) {
File file = new File("C:\\Users\\SGYZ\\IdeaProjects\\IO流技术\\");
String[] fb =file.list();
for (String temp :
fb) {
System.out.println(temp);
}
}
}
- 创建文件
import java.io.File;
import java.io.IOException;
public class FileDemo06 {
public static void main(String[] args) throws IOException {
File src = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/io.txt");
boolean flag =src.createNewFile();
System.out.println(flag);
flag = src.delete();
System.out.println(flag);
System.out.println("----------");
//不是文件夹
src = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/IO_study02");
flag =src.createNewFile();
System.out.println(flag);
flag = src.delete();
System.out.println(flag);
//补充: con com3... 操作系统的设备名,不能正确创建
src = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/con");
src.createNewFile();
}
}
文件夹操作
- 创建目录
import java.io.File;
public class DirDemo03 {
public static void main(String[] args) {
File dir = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/dir/test");
//创建目录 mkdirs()
boolean flag = dir.mkdirs();
System.out.println(flag);
//创建目录 mkdir()
dir = new File("C:/Users/SGYZ/IdeaProjects/IO流技术/dir/test2");
flag = dir.mkdirs();
System.out.println(flag);
}
}
- 列出下级名称及File对象
public class DirDemo04 {
public static void main(String[] args) {
File dir = new File("C:/Users/SGYZ/IdeaProjects/IO流技术");
//下级名称 list
String[] subNames = dir.list();
for(String s:subNames) {
System.out.println(s);
}
//下级对象 listFiles()
File[] subFiles = dir.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 DirDemo01 {
public static void main(String[] args) {
File fp = new File("C:\\Users\\SGYZ\\Documents\\Java\\05_常用类");
printName(fp,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 (src==null||!src.exists()){
return;
}else if (src.isDirectory()){
for (File temp :
src.listFiles()) {
printName(temp,deep+1);//递归体
}
}
}
}
- 统计文件大小
import java.io.File;
/**
* 统计文件夹大小
*
*/
public class DirDemo02 {
public static void main(String[] args) {
File fp = new File("C:\\Users\\SGYZ\\Documents\\Java\\05_常用类");
dirSize(fp);
System.out.println(len);
}
private static long len =0;
public static void dirSize(File src){
if (null!=src&&src.exists()){
if (src.isFile()){
len+=src.length();
}else {
for (File temp :src.listFiles()){
dirSize(temp);
}
}
}
}
}
运行结果
434388141