public class FileKnow
{
public static void main(String[] args)
{
//构建file对象 ,参数表示文件所在的路径
File file = new File("d:\\niit.log"); //判断文件是否存在
System.out.println(file.exists());
//判断文件是否是单个的文件
System.out.println(file.isFile());
//判断文件是否是文件夹
System.out.println(file.isDirectory());
//获取文件的绝对路径
System.out.println(file.getAbsolutePath());
//获取文件名
System.out.println(file.getAbsolutePath().substring(file.getAbsolutePath().lastIndexOf("\\")+1,file.getAbsolutePath().lastIndexOf(".")));
//获取文件完整的名称包括后缀名
System.out.println(file.getName());
//获取文件所在的相对路径
System.out.println(file.getParent());
//获取文件所在盘符的大小空间
System.out.println(file.getTotalSpace());
//获取文件所在盘符的可用空间
System.out.println(file.getFreeSpace());
System.out.println(file.getUsableSpace());
//获取文件自身的字节数
System.out.println(file.length());
//是否隐藏文件
System.out.println(file.isHidden());
//是否可读
System.out.println(file.canRead());
//设置文件是否可写(只读性的设置)
file.setWritable(false);
//获取文件最后次修改的时间
System.out.println(file.lastModified());
System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(file.lastModified())));
// FileKnow fileKnow = new FileKnow();
// fileKnow.createFile("E:/【 图 片 】", "weifei.jpg");
}
/*******************************************文件基本操作**********************************************/
/**
* 根据指定路径搜索显示所有的文件信息
* @param path
*/
public void showFiles(String path)
{
//通过路径构建文件
File file = new File(path);
//判断文件是否存在
if(file.exists())
{
//打印输出当前文件的路径
System.out.println(file.getAbsolutePath());
//判断是否是文件夹
if(file.isDirectory())
{
//判断文件夹中是否有文件
File[] files = file.listFiles();
if(files != null)
{
//遍历子文件
for(File childFile : files)
{
showFiles(childFile.getAbsolutePath());
}
}
}
}
else
{
System.out.println("文件不存在!");
}
}
/**
* @param args
*/
/**
* 创建文件
*/
public void createFile(String path,String fileName)
{
//创建文件对象
File file = new File(path, fileName);
//判断文件是否存在
if(file.exists())
{
System.out.println("文件已经存在");
}
else
{
//创建文件
try
{
if (file.createNewFile())
{
System.out.println("文件创建成功");
}
else {
System.out.println("文件创建失败");
}
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 创建文件夹
* @param path
*/
public void createDirectroy(String path, String diretroyName)
{
File file = new File(path, diretroyName);
//判断是否存在
if(!file.exists())
{
//创建文件夹
file.mkdir();
}
else
{
System.out.println("文件夹已经存在");
}
}
/**
* 拷贝文件
* @param sourcePath 复制文件的路径 如:D:/
* @param fileName 文件名 如:back.jpg
* @param newPath 复制到的位置 如:E:/
*/
public void copyFile(String sourcePath, String fileName, String newPath)
{
//创建复制的文件
File sourceFile = new File(sourcePath,fileName);
//判断文件是否存在
if(sourceFile.exists())
{
File newFile = new File(newPath,fileName);
//如果文件存在,判断文件的类型
if(sourceFile.isFile())
{
//如果是单个的文件,使用流读写文件
try
{
//构建输入流读取复制的文件
BufferedInputStream input = new BufferedInputStream(new FileInputStream(sourceFile),1024*1024*10);
//构建输出流写出文件
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(newFile),1024*1024*10);
int data;
while((data = input.read()) != -1)
{
output.write(data);
}
//关闭流
output.flush();
output.close();
input.close(); } catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
{
//如果是文件夹,新建文件夹
newFile.mkdir();
//判断文件夹中是否还有子文件
File[] files = sourceFile.listFiles();
//遍历子文件
for(File childFile : files)
{
//递归复制子文件
copyFile(childFile.getParent(), childFile.getName(), newFile.getAbsolutePath());
}
}
}
}
/**
* 剪切文件
* @param sourcePath
* @param fileName
* @param newPath
*/
public void cutFile(String sourcePath, String fileName, String newPath)
{
//
}
/**
* 重命名
* @param path
* @param fileName
* @param newName
*/
public void renameFile(String path, String fileName, String newName)
{
//创建源文件
File oldFile = new File(path, fileName);
//判断源文件是否存在
if(oldFile.exists())
{
//创建新文件
File newFile = new File(path, newName);
//判断新文件是否存在
if(!newFile.exists())
{
//重命名
oldFile.renameTo(newFile);
}
else
{
System.out.println("文件名已存在");
} }
else
{
System.out.println("文件不存在");
} }
/**
* 删除文件
* @param path
* @param fileName
*/
public void deleteFile(String path, String fileName)
{
//获取要删除的文件对象
File file = new File(path,fileName);
//判断文件是否存在
if(file.exists())
{
//如果存在,判断该文件是文件还是文件夹
if(file.isDirectory())
{
//如果是文件夹,获取该文件夹的子文件
File[] files = file.listFiles();
//递归删除子文件
for(File childFile : files)
{
deleteFile(childFile.getParent(), childFile.getName());
}
}
//删除整个文件
file.delete();
}
}
}

JAVA FILE or I/O学习 - File学习的更多相关文章

  1. Java IO学习--File类

    一.File类 File类具备一定的误导性,可能容易认为它指代的是文件,实际并非如此,它既能代表一个特定文件的名称,又能表示一个目录下一组文件的名称.简而言之,File类是文件或者目录路径名的抽象表示 ...

  2. linux命令学习——file

    1.简介 file命令是用来检测并显示文件类型(determine file type).通过file指令,我们得以辨识该文件的类型,例如可以知道动态连接库是32位还是64位. 2.命令格式 file ...

  3. 《JAVA程序设计》_第六周学习总结

    一.本周学习内容 1.内部类--7.1知识 在一个类的内部定义的类成为内部类,包含内部类的类叫做外嵌类 内部类和外嵌类的关系 外嵌类的成员变量在内部类中仍然有效,内部类也可调用外嵌类中的方法 内部类的 ...

  4. 201771010126 王燕《面向对象程序设计(java)》第十八周学习总结

    实验十八  总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...

  5. 201771010126 王燕《面向对象程序设计(Java)》第十六周学习总结

    实验十六  线程技术 实验时间 2017-12-8 1.实验目的与要求 (1) 掌握线程概念: ‐多线程 是进程执行过中产生的多条线索. 是进程执行过中产生的多条线索. 是进程执行过中产生的多条线索. ...

  6. 马昕璐 201771010118《面向对象程序设计(java)》第十五周学习总结

    第一部分:理论知识学习部分 JAR文件:将.class文件压缩打包为.jar文件后,使用ZIP压缩格式,GUI界面程序就可以直接双击图标运行. 既可以包含类文件,也可以包含诸如图像和声音这些其它类型的 ...

  7. 20172319 《Java程序设计教程》 第9周学习总结

    20172319 2018.05.06-05.14 <Java程序设计教程>第9周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考 ...

  8. JAVA基础--JAVA 集合框架(泛型、file类)16

    一.集合总结 集合:Collection体系.Map体系. Collection体系:单列集合的共性操作规则. List:列表,可以重复,有下标,拥有特有的迭代器ListIterator. Array ...

  9. 201871010119-帖佼佼《面向对象程序设计(java)》第十五周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

随机推荐

  1. oracle 插入含&字符串

    1.创建表 SQL> create table t(id number,name varchar2(20)); 表已创建. 2.常规方式插入 SQL> insert into t valu ...

  2. Farpoint Spread 常用事件

    1 // 单元格编辑结束,焦点离开或者按回车键时 比如:你要判断当前单元格输入内容是否合法.private void fpSpread1_EditModeOff(object sender, Syst ...

  3. 用css控制一个DIV画图标。

    在实际开发中,我们会用到一些小图形,图标.大多数情况下都是用图片来实现的,同时对图片进行处理使图片大小尽可能的缩小.但是图片在怎么处理也是按KB来算的.但是要是用CSS画,只要用很少的空间就能完成同样 ...

  4. hibernate 及缓存机制

    hibernate 是一个持久层的框架,经常访问物理数据库,为了降低应用程序访问物理数据库的频次, 从而提升性能, hibernate缓存机制分为: 一类是session 级缓存,二是sessionF ...

  5. Performance tool httperf

    httperf: A relatively well-known open source utility developed by HP, for Linux operating systems on ...

  6. Svn服务启动的两种方式

    一.svn服务器启动 › cmd命令行启动:vsvnserve -d –r 文档仓库路径 -d 后台执行 › -r 版本库的根目录 二.›Windows服务自动启动     利用xp.2000 以上的 ...

  7. Mongodb安装和基本命令

    本人是在Centos中安装的mongodb 1.下载mongodb curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2. ...

  8. 四轴飞行器1.3 MPU6050(大端)和M4的FPU开启方法

    四轴飞行器1.3 MPU6050(大端)和M4的FPU开启方法  原创文章,欢迎转载,转载请注明出处      最近时间花在最多的地方就是STM32的I2C上了.之前就知道STM32的I2C并不好用, ...

  9. Spring Boot MyBatis 连接数据库

    最近比较忙,没来得及抽时间把MyBatis的集成发出来,其实mybatis官网在2015年11月底就已经发布了对SpringBoot集成的Release版本,Github上有代码:https://gi ...

  10. 浅谈Java泛型中的extends和super关键字(转)

    通配符 在本文的前面的部分里已经说过了泛型类型的子类型的不相关性.但有些时候,我们希望能够像使用普通类型那样使用泛型类型: 向上造型一个泛型对象的引用 向下造型一个泛型对象的引用 向上造型一个泛型对象 ...