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. Object-c的一些基本概念

    自学了一个多月的IOS,对Object-C也有了初步的认识,也有很多观点不知道是否正确,所以整理了一下,和小伙伴们分享分享 1.OC中使用的消息机制代替调用方法 区别:使用消息结构的语言,其运行时缩引 ...

  2. 一道面试题细说C++类型转换

    开篇先说这道面试题: class ClassA { public: virtual ~ ClassA() { } virtual void FunctionA() { } }; class Class ...

  3. Struts学习之流程汇总

    struts2 架构图如下图所示: 依照上图,我们可以看出一个请求在struts的处理大概有如下步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的 ...

  4. 做了一个图片等比缩放的js

    做了一个图片等比缩放的js 芋头 发布在view:8447   今天改了一下博客的主题,发现博客主题在ie6下变样了,后来发现是因为某篇文章里的某个图片太大了撑开了容器,导致样式错位,前几天公司需求里 ...

  5. 通过class类来实例化其他类的对象(使用有参构造函数)

    import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; class Pers ...

  6. [暂停一天]从零开始PHP学习 - 第六天

    今天这个系列没有时间去写了 在公司完善一个项目     已经备好6瓶咖啡 两天 + 一夜 完成这个项目  真是苦逼 诶 反正这几天 明白一个道理:别以为你多牛B 你不会的东西多了!  比你牛B的人也多 ...

  7. linux之sed

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

  8. Google浏览器调试js

    1.进入source找到js位置 一般js文件就到js目录下找,tpl中的就到tpl中找. 我这次写在tpl中的,就到list中找,它就把list中的js单独显示出来了. 2.设置断点,进行排错.刷新 ...

  9. Windows Azure 自动伸缩已内置

     WindowsAzure平台提供的主要优点之一是能够在有需要时快速缩放云中的应用程序以响应波动.去年7月以前,您必须编写自定义脚本或使用其他工具(如Wasabi或MetricsHub)来启用自动 ...

  10. Windows 10 安装

    下载了 Windows 10 的 ISO 文件:WindowsTechnicalPreview-x64-ZH-CN.iso,在 VMWare 10 上进行了安装. 安装时没有 Windows 10   ...