File
java通过虚拟机与操作系统OS进行交互,来进行文件的相关操作——其中的建立联系就是File
名称分隔符
package com.io.cx;
import java.io.File;
public class Demo01 {
public static void main(String[] args) {
String path ="D:\\EclipsePlace\\IO\\内存泄漏.JPG";
// \ / 名称分隔符 separator
System.out.println(File.separatorChar);
//建议
//1、/
path = "D:/EclipsePlace/IO/内存泄漏.JPG";
System.out.println(path);
//2、常量拼接
path ="D:"+File.separator+"EclipsePlace"+File.separator+"IO"+File.separator+"内存泄漏.JPG";
System.out.println(path);
}
}
构造器
File类的构造器如下
package com.io.cx;
import java.io.File;
public class Demo1 {
/**
* 构建File对象
*/
public static void main(String[] args) {
String path ="D:/EclipsePlace/IO/内存泄漏.JPG";
//1、构建File对象
//直接给出路径
File src = new File(path);
System.out.println(src.length());
//2、构建File对象
//父亲路径+名称
src = new File("D:/EclipsePlace/IO","/内存泄漏.JPG");
//或路径+名称即可
src = new File("D:/EclipsePlace/","IO/内存泄漏.JPG");
System.out.println(src.length());
//3、构建File对象
//父对象+子名称
src = new File(new File("D:/EclipsePlace/IO"),"内存泄漏.JPG");
System.out.println(src.length());
}
}
相对路径和绝对路径
package com.io.cx;
import java.io.File;
public class Demo2 {
/**
* 构建File对象
* 相对路径与绝对路径
* 1)存在盘符: 绝对路径
* 2)不存在盘符:相对路径 ,当前目录 user.dir
*/
public static void main(String[] args) {
String path ="D:/EclipsePlace/IO/内存泄漏.JPG";
//绝对路径
File src = new File(path);
System.out.println(src.getAbsolutePath());//获取绝对路径
//相对路径_相对当前工程为出发点
System.out.println(System.getProperty("user.dir"));//获取用户的目录——当前工程
src = new File("内存泄漏.JPG");
System.out.println(src.getAbsolutePath());
//构建一个不存在的文件
src = new File("不存在的文件.JPG");
System.out.println(src.getAbsolutePath());
}
}
输出如下:
D:\EclipsePlace\IO\内存泄漏.JPG
D:\EclipsePlace\IO
D:\EclipsePlace\IO\内存泄漏.JPG
D:\EclipsePlace\IO\不存在的文件.JPG
重要的方法
1
getName()——获取FIle名称
getPath()——获取FIle路径
getAbsolutePath()——获取FIle绝对路径
getParent()——获取FIle父路径,若无则返回NULL
2
exists()——是否存在
isFile()——存在,文件
isDirectory()——存在,文件夹
3
length()——文件可以直接通过该函数,若不存在则返回0;文件夹用该函数拿不到大小
4
createNewFile()——创建一个新文件,若存在则创建失败
delete()——删除文件
以上方法的测试代码如下:
1
package com.io.cx;
import java.io.File;
/**
* 名称或路径
* getName() : 名称
* getPath() : 相对/绝对
getAbsolutePath() :绝对
getParent(): 上个路径/返回null
*/
public class Demo3 {
public static void main(String[] args) {
File src = new File("D:/EclipsePlace/IO/内存泄漏.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());
}
}
输出如下:
名称:内存泄漏.JPG
路径:D:\EclipsePlace\IO\内存泄漏.JPG
绝对路径:D:\EclipsePlace\IO\内存泄漏.JPG
父路径:D:\EclipsePlace\IO
父对象:IO
2
package com.io.cx;
import java.io.File;
/**
* 文件状态
* 1、不存在: exists
* 2、存在
* 文件: isFile
* 文件夹: isDirectory
*/
public class Demo4 {
public static void main(String[] args) {
File src = new File("IO/内存泄漏.JPG");
System.out.println(System.getProperty("user.dir"));//相对路径会在当前目录下查找D:\EclipsePlace\IO
System.out.println(src.getAbsolutePath());//D:\EclipsePlace\IO\IO\内存泄漏.JPG
System.out.println("是否存在:"+src.exists());
System.out.println("是否文件:"+src.isFile());
System.out.println("是否文件夹:"+src.isDirectory());
//是否存在:false
//是否文件:false
//是否文件夹:false
src = new File("内存泄漏.JPG");
System.out.println("----------");
System.out.println("是否存在:"+src.exists());
System.out.println("是否文件:"+src.isFile());
System.out.println("是否文件夹:"+src.isDirectory());
//是否存在:true
//是否文件:true
//是否文件夹:false
src = new File("D:/EclipsePlace/IO/");
System.out.println("----------");
System.out.println("是否存在:"+src.exists());
System.out.println("是否文件:"+src.isFile());
System.out.println("是否文件夹:"+src.isDirectory());
// 是否存在:true
// 是否文件:false
// 是否文件夹:true
//文件状态
src = new File("xxx");
if(null == src || !src.exists()) {
System.out.println("文件不存在");
}else {
if(src.isFile()) {
System.out.println("文件操作");
}else {
System.out.println("文件夹操作");
}
}
// 文件不存在
}
}
3
package com.io.cx;
import java.io.File;
/**
* length() : 文件的字节数
*/
public class Demo5 {
public static void main(String[] args) {
File src = new File("D:/EclipsePlace/IO/内存泄漏.JPG");
System.out.println("长度:"+ src.length());
src = new File("D:/EclipsePlace/IO");
System.out.println("长度:"+ src.length());
src = new File("D:/EclipsePlace/不存在");
System.out.println("长度:"+ src.length());
}
}
输出如下:
长度:68795
长度:0
长度:0
4
package com.io.cx;
import java.io.File;
import java.io.IOException;
/**
* 其他信息:
* createNewFile() : 不存在才创建,存在创建成功——只能创建文件
* delete():删除已经存在的文件
*/
public class Demo6 {
public static void main(String[] args) throws IOException {
File src = new File("D:/EclipsePlace/IO/io.jpg");
boolean flag =src.createNewFile();//可能创建失败
System.out.println(flag);
flag = src.delete();
System.out.println(flag);
System.out.println("----------");
//不是文件夹
src = new File("D:/EclipsePlace/IO/IO2");
flag =src.createNewFile();
System.out.println(flag);
flag = src.delete();
System.out.println(flag);
//补充: con或com3是操作系统的设备名(相当于关键字),不能正确创建
src = new File("D:/java300/IO_study01/con");
src.createNewFile();
}
}