前言
注意了各位,这次的内容对男性同胞很重要,尤其是那些有女朋友的男性同胞。你不要以为这只是一个分享学习知识的博客,它关乎着你们的身心幸福问题,为什么呢?让我们先学习一下什么是IO文件,再往下逐层剖析,当然,如果你急不可耐想要直接知道,可跳到IO文件遍历的内容。
IO概述
那说到文件,就一定要提及IO,那IO是什么呢?
public class Demo {
/**
* IO流概述
* 可以将这种数据传输操作,看做一种数据的流动 , 按照流动的方向分为输入Input和输出Output
* Java中的IO操作主要指的是 java.io包下的一些常用类的使用,
* 通过这些常用类对数据进行读取(输入Input) 和 写出(输出Output)
*
* IO流的分类:
* 按照流的方向来分,可以分为:输入流和输出流.
* 按照流动的数据类型来分,可以分为:字节流和字符流
*
* 字节流:
* - 输入流 : InputStream
* - 输出流 : OutputStream
* 字符流:
* - 输入流 : Reader
* - 输出流 : Writer
*
*
* 一切皆字节:
* 计算机中的任何数据(文本,图片,视频,音乐等等)都是以二进制的形式存储的.
* 在数据传输时 也都是以二进制的形式存储的.
* 后续学习的任何流 , 在传输时底层都是二进制.
* @param args
*/
public static void main(String[] args) throws FileNotFoundException {
}
构造方法
那我们继续看看File类中的构造方法有哪些?
好,我们主要是注重前三个就好了,这前三个构造方法讲述的是什么呢?,说的是创建一个File对象,那这个对象又是用来干什么的呢?,这还用说,当然是藏一些文件啦。
好,接着说,那我们就可以通过源码来向大家描述一下这个File构造方法的神奇之处!
public class Demo2 {
public static void main(String[] args) throws IOException {
File file = new File("D://1.text");
boolean flag = file.createNewFile();
System.out.println(flag?"创建成功":"创建失败");
}
}
注意看这段代码,逻辑很简单,但是展示的效果,以及影响是深远的。注意:我建立的D盘,为什么我不创建在C盘,原因有二,一是C盘系统文件复杂,到时候创建完删除出了岔子会很麻烦,之后我也会说这一点;其二,那就是我如果创建C盘会显示拒接访问,大家可以试一试,这是因为我们的C盘是系统盘,如果你有安装了杀毒软件,像360安全卫士啊,火绒啊,这类的,它会自动阻止你访问C盘,当然也建议大家在练习的时候不要在C盘中进行,换个D盘不就行了。
好了,回到我们的源码创建,那这次创建我们可以看到:
它创建了一个文件,很神奇对不对,那它有什么用呢?这还用我说,让我们接着往下学习。
创建文件夹
//衔接上文
File dir = new File("D://1.text");
dir.mkdir();//创建单层文件夹
File dir2 = new File("D://a/a/a/a");
dir2.mkdirs();//创建多层文件夹文件夹
想要API的链接:最新版API JDK11版本中文释义
那我们来看一下API,创建文件夹的方法。
花红线的都是重点,
首先我们可以看到,最上面的几个红线是可以去判断你系统中的文件是什么样的文件,,什么目录,绝对路径等,这可不要让女朋友知道,这是重点,那最重要其实是最后3个,也是我源码进行测试的内容,所属也是创建的。那经过测试,很显然,我特意将其设置为1.text,但它是个文件夹,那下面这个az则是多层文件夹,大家可以下去自行测试,我就不演示了。
创建文件
接下来就是往里面填充内容了。
File dir = new File("D://1.text");
dir.mkdir();//创建单层文件夹
File dir2 = new File("D://a/a/a/a");
dir2.mkdirs();//创建多层文件夹文件夹
File a = new File(dir,"a.txt");
a.createNewFile();
//a.delete();
//File b = new File("D://创建的新文件夹","b.txt");
//b.createNewFile();
// b.delete();
我们可以清晰的看到,我在之前的1.text文件下创建了一个a.txt文件,用的是createNewFile()方法,同样的下面被注释的b是另一种创建方法。
而文件对象名.delete();可直接对其删除。,这个我就不再演示,大家自行练习。
迁移文件并重命名
//衔接上文
File dir = new File("D://2.text");
dir.mkdir();
File file = new File("D://2.text/a.txt");
boolean flag = file.createNewFile();
System.out.println(flag?"创建成功":"创建失败");
//File newFile = new File("D:\\1.text\\转移.txt");
//file.renameTo(newFile);//转移文件位置并重命名
那我是首先创建一个新文件夹和文件然后再对其迁移,并重命名。我们看到
之后我们将注释去掉重新运行,我们可以找到我们的D盘的2.text文件夹下已经没有了文件,而1.text文件夹下出现了。,这里的迁移.txt就是我们之前的a.txt了。
==重点啊,兄弟们,转移文件,神不知鬼不觉啊,你可以创建一个隐藏文件夹,然后放到里面啊,谁能发现啊!女朋友都不行。==啊,这时候又有人说了,那怎么创建一个隐藏文件夹啊?,这还用我说吗,直接问度娘啊?好吧我这里也罢链接给大家:如果用file创建一个隐藏文件夹。那既然说到这里了我们不去试一试让大家看看效果怎么行呢,我们为了方便查找,创建一个名为:1(隐藏文件夹)的文件夹,然后我们再往里面添加数据试试。
//还是原来的代码
File dir = new File("D://1(隐藏文件夹)");
dir.mkdir();
File file = new File("D://1(隐藏文件夹)/隐藏文件.txt");
boolean flag = file.createNewFile();
System.out.println(flag?"创建成功":"创建失败");
很明显啊!创建成功。
那我们找到D盘我们的隐藏文件夹,
哎,首先我们可以看到,没有这个文件夹,按理来说,它为1字头的,应该在最上面的。那我们吧上面的查看中的显示/隐藏中的隐藏的项目给勾选上,之后再去看看。
它出来了,那我们再去看看里面的内容,
嘿嘿嘿,同志们,怎么样,其实大家学习到这里已经可以去与女朋友斗智斗勇了,没有的也可以更好的隐藏我们的文件不是。
系统不同的分隔符
对了,穿插一点,有可能由于大家使用的系统不一样,我们上面的分隔符会没有用,那java也给我们提供了默认的分隔符。
//衔接上文
System.out.println(File.pathSeparator);//;系统提供路径分隔符---Linux系统的是 :
System.out.println(File.separator);// \系统提供名称分隔符---Linux系统的是 /
运行结果如下:
文件遍历案例(不能让女朋友知道)
好,我们来到文件遍历,这也是重点中的重点,最主要的是不要让你们的女朋友知道这个方法。
那我们再次贴上这张图来方便大家的学习。
/**
* 文件遍历案例
*/
public class Demo4 {
public static void main(String[] args) {
File d = new File("C:\\Users");//创建File对象,并指定查询路径
File[] files = d.listFiles();
listFile(files);//查找文件
}
public static void listFile(File[] files){
if(files!=null&&files.length>0){//判断文件存在与否
for (File file:files) {//采用增强for循环遍历
if(file.isFile()){//判断文件是否是文件
//文件
if(file.getName().endsWith(".zip")){
//获取文件明后缀,可随意定义
//如:txt,zip,avi,mp4等等
if(file.length()>100*1024*1024){
//file.delete();//删除文件
//System.out.println(file.getAbsolutePath()+"已删除");
}
//判断字节长度,1024字节-1kb->1024kb-1MB->1024MB-1GB
//遍历查找文件
System.out.println("找到了一个png文件"+file.getAbsolutePath());
}
}else {
//文件夹
File[] files2 = file.listFiles();
listFile(files2);
}
}
}
}
}
假如我找的是图片文件,这是运行时的结果,果然不出我所料,没有什么违法的东西,啊那你们的盘内有没有围巾的东西我就不确定了啊。
总结
那到这里也就告一段落了,对于IO文件类的初步学习就是这样了。那如果大家学习过之后有收获呢,有的话能不能点个赞,评论一下,关注我呢。