Java IO 之File操作
一.File中的两个常量分隔符
package File;
import java.io.File;
/**
* 两个常量
* 1、路径分隔符 ;
* 2、名称分隔符 \ (windows) /(linux等)
*/
@SuppressWarnings("all")
public class Demo01 {
public static void main(String[] args) {
System.out.println(File.pathSeparator);
System.out.println(File.separator);
//路径表示形式
String path = "E:\\xp\\test\\2.jpg"; //不推荐
//适合动态生成时使用
path = "E:"+File.pathSeparator+"win7"+File.separator+"test"+File.separator+"2.jpg";
path = "E:/win7/test/2.jpg";//推荐使用
}
}
运行结果:
;
\
二.相对路径与绝对路径
package File;
import java.io.File;
/**
* 相对路径与绝对路径 构造File对象
* 1.相对路径
* File(String parent,String child) ==>File("E:/xp/test","2.jpg");
* File(File parent,String child) ==>File(new File("E:/xp/test"),"2.jpg");
* 2.绝对路径
* src = new File("E:/xp/test/2.jpg");
*
* getName() 返回名称
* getPath() 如果是绝对的,返回绝对路径;如果是相对的,返回相对路径。
* getAbsolutePath() 返回绝对路径
*/
public class Demo02 {
public static void main(String[] args) {
String parentPath = "E:/xp/test";
String name = "2.jpg";
//相对路径
File src = new File(parentPath,name);
//src = new File(new File(parentPath),name);
//输出
System.out.println(src.getName());
System.out.println(src.getPath());
System.out.println("-------------");
//绝对路径
src = new File("E:/xp/test/2.jpg");
System.out.println(src.getName());
System.out.println(src.getPath());
System.out.println("-------------");
//没有盘符,一user.dir构建
src= new File("test.txt");
//src= new File(".");//当前路径,通过这种方式可以找到当前工作空间路径。
System.out.println(src.getName());//返回名称
System.out.println(src.getPath());//如果是绝对的,返回绝对路径;如果是相对的,返回相对路径。
System.out.println(src.getAbsolutePath());
}
}
运行结果:
2.jpg
E:\xp\test\2.jpg
-------------
2.jpg
E:\xp\test\2.jpg
-------------
test.txt
test.txt
G:\program\javase\IOFile\test.txt
三.File的常用方法
package File;
import java.io.File;
import java.io.IOException;
/**
* 常用方法
* 1、文件名
* getName() 文件名、路径名
* getPath() 路径名
* getAbsoluteFile() 绝对路径所对应的File对象
* getAbsolutePath() 绝对路径名
* getParent() 返回父目录
*
* 2、判断信息
* exists()
* canWrite()
* canRead()
* isFile()
* isDirectory()
* isAbsolute() 消除平台差异,如以盘符开头,其他以/开头
* 3、长度(字节数) 不能读取文件夹的长度
*
* 4、创建、删除文件
* createNewFile 创建新文件,如果不存在,进行创建;如果存在,返回false。
* 临时文件
*/
@SuppressWarnings("all")
public class Demo03 {
public static void main(String[] args) {
test01();
System.out.println("========");
test02();
System.out.println("========");
try {
test03();
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件操作失败");
}
}
//1、获取文件名称
public static void test01()
{
//File src = new File("E:/xp/test/2.jpg");
File src = new File("test/2.txt");
System.out.println(src.getName());//名称
//如果是绝对路径,返回完整路径,否则相对路径
System.out.println(src.getPath());
//返回绝对路径
System.out.println(src.getAbsolutePath());
//返回上一级目录,如果是相对路径,可能返回null;如new File("2.txt");
System.out.println(src.getParent());
}
//2、判断信息 读取相关信息,不是读取内容,而是位置,大小,占用空间,创建时间等属性
public static void test02()
{
//String path = "2.txt";
String path = "G:/love.txt";
File src = new File(path);
System.out.println("文件是否存在:"+src.exists());
//是否可读写
System.out.println("文件是否可写:"+src.canWrite());
//isFile()、isDirectory()
if(src.isFile())
{
System.out.println("文件");
}
else if(src.isDirectory()) {
System.out.println("文件夹");
}
else {
System.out.println("文件不存在");
}
System.out.println("是否为绝对路径:"+src.isAbsolute());
System.out.println("长度为:"+src.length());//这个长度是字节数
}
//3、创建,删除文件
public static void test03() throws IOException
{
//创建文件
//con 系统关键字,不能创建成功。
String path = "F:/100.txt";
File src = new File(path);
if(!src.exists())
{
boolean flag = src.createNewFile();
System.out.println(flag?"创建成功":"创建失败");
}
//删除文件
boolean flag = src.delete();
System.out.println(flag?"删除成功":"删除失败");
//static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间
//static createTempFile(前缀3个字节长,后缀默认.temp,目录)
File temp = File.createTempFile("tes", ".temp",new File("G:/"));
try {
Thread.sleep(2000);
temp.deleteOnExit();//退出即删除
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
运行结果:
2.txt
test\2.txt
G:\program\javase\IOFile\test\2.txt
test
========
文件是否存在:true
文件是否可写:true
文件
是否为绝对路径:true
长度为:32
========
创建成功
删除成功
四.创建目录
package File;
import java.io.File;
import java.io.FilenameFilter;
/**
* 创建目录
* mkdir() 创建目录 必需确保父目录存在,如果不存在,创建失败。
* mkdirs() 创建目录 如果父目录链不存在,一同创建。
* String[] list() 文件|目录名 字符串形式
* File[] listFiles() 文件|目录名 File对象形式
* File[] listFiles(FilenameFilter filter) 过滤
*/
@SuppressWarnings("all")
public class Demo04 {
public static void main(String[] args) {
test01();
test02();
}
public static void test01()
{
String path = "G:/try/123/123/325";
File src = new File(path);
//src.mkdir();
src.mkdirs();
System.out.println("创建成功。");
}
public static void test02()
{
//String path = "G:/try/123";
String path = "G:/work";
File src = new File(path);//文件夹
if(src.isDirectory())//存在并且为目录
{
System.out.println("======子目录|子文件名 《字符串的表现形式》======");
String[] subNames = src.list();
for(String temp:subNames)
{
System.out.println(temp);
}
System.out.println("====子目录|子文件 《File对象》=====");
File[] subFiles = src.listFiles();
for(File temp:subFiles )
{
System.out.println(temp.getAbsolutePath());
}
System.out.println("======子文件,Java对象======");
//命令设计模式
subFiles = src.listFiles(new FilenameFilter() {
/**
* dir代表src
*/
@Override
public boolean accept(File dir, String name) {
//System.out.println(dir.getName());
//System.out.println(dir.getAbsolutePath());
//必须是文件且后缀是.java
return new File (dir,name).isFile()&&name.endsWith(".rar");
}
});
for(File temp:subFiles)
{
System.out.println(temp.getAbsolutePath());
}
}
}
}
运行结果:
创建成功。
======子目录|子文件名======
123
324
dsafds.java
sdafd.java
新建文件夹 (3)
新建文件夹 (4)
====子目录|子文件File对象=====
G:\try\123\123
G:\try\123\324
G:\try\123\dsafds.java
G:\try\123\sdafd.java
G:\try\123\新建文件夹 (3)
G:\try\123\新建文件夹 (4)
======子文件,Java对象======
G:\try\123\dsafds.java
G:\try\123\sdafd.java
五.输出子孙级目录或文件的名称
package File;
import java.io.File;
import java.util.Arrays;
/**
* 输出子孙级目录|文件的名称
* 1、listFile()
* 2、递归
*
* static listRoots() 根路径
* @author liguodong
*/
public class Demo05 {
public static void main(String[] args) {
String path = "G:/try/123";
File parent = new File(path);
printName(parent);
System.out.println("----------");
File[] roots = File.listRoots();
System.out.println(Arrays.toString(roots));
}
public static void printName(File src){
if(null==src||!src.exists()){
return;
}
System.out.println(src.getAbsolutePath());
if(src.isDirectory()){
for(File sub:src.listFiles()){
printName(sub);
}
}
}
}
运行结果:
G:\try\123
G:\try\123\123
G:\try\123\123\325
G:\try\123\432
G:\try\123\432\1.txt
G:\try\123\432\2.txt
G:\try\123\432\3.txt
G:\try\123\4344
----------
[C:\, D:\, E:\, F:\, G:\, H:\, K:\]
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。