第一:Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作。以下对Java File文件操作以及常用方法进行简单介绍

案例1:遍历出指定目录下的文件夹,并输出文件名

 static void findDirectory() {
//构建file对象,指定目录路径(separator 跨平台分隔符)
File root = new File("E://") ;//传的是String,因为是路径,所有按照格式写eg:"E://"与"E:"+File.separator功能相同
//判断是否存在这个路径(一定要写这个判断,不写,如果不存在会报NullPointerException异常)
if(root.exists()) { //取出指定路径下所有文件及文件夹对象
File[] files = root.listFiles() ;
for (File file : files) {
if(file.isDirectory()) {//如果是文件夹(如果不行,会把文件与文件夹的名称一起输出)
System.out.println("文件夹名称:"+file.getName());
}
}
}
}

以上相关方法简单解释

1.boolean exists() 判断文件(文件和文件夹)是否存在

2.boolean isDriectory() 判断文件夹是否存在

3.String getName() 获取文件的名称

案例2://判断E:盘AA/下有没有一个BB文件夹,如果没有,创建它,如果有,在里面创建文件tt.txt

 static void createFile() throws IOException{
File file=new File("E:/AA/BB/CC/tt.txt");
//先判断该文件上级(BB)目录是否存在
if(!file.getParentFile().exists()){
//创建多级文件夹
file.getParentFile().mkdirs() ;
System.out.println("文件夹创建完毕..");
}
if(!file.exists()){
//创建文件
file.createNewFile();
}
}

以上用到的相关方法简单解释

1.String getParentFile() 如果没有父目录返回null

2.boolean mkdir() 创建目录

3.boolean mkdirs() 创建多级目录

4.boolean createNewFile() 如:E:/AA/tt.txt 如果存在指定目录就返回true否则返回false,不管tt文件是否存在都会返回true,但是如果不存在tt文件则创建tt文件然后返回true

案例3:遍历出指定路径下所有文件(使用了递归)

 static void outFileName(String path){
File rt=new File(path);
if(!rt.exists())
return;
File[] files=rt.listFiles();
if(files!=null&&files.length>0){//这个判断很重要
for (int i = 0; i < files.length; i++) {
if(files[i].isFile()){
System.out.println(files[i].getName());
}else{
//遇到了文件夹【将该文件夹路径传递到一个根据路径查询文件的方法中】
outFileName(files[i].getAbsoluteFile().toString());//此处实现了递归
}
}
}
}

以上用到的相关方法简单解释

1. File[] listFiles() 当路返回null有两种情况:第一,路径不存在;第二,路径存在,但没有访问权限

2.   long     length()

第二:IO流_File类的结合应用,实现文件的复制

1.IO流的分类

  根据处理数据类型的不同分为:字符流和字节流

  根据数据流向不同分为:输入流(InputStream)和输出流(OutputStream)

    ->对输入流只能进行读操作,对输出流只能进行写操作

eg:由于字节流能处理所有类型的数据(如:图片,视频等),所以此处用字节流做演示

案例4:指定文件,在控制台输出文件内容

 static void outFileContext() throws Exception{
File file=new File("E:/ch01.txt");
if(file.exists()){
//构建一个输入流
InputStream in=new FileInputStream(file);
int size=in.available();
System.out.println("文件大小:"+size);
byte[] bytes=new byte[size];
in.read(bytes);
in.close();
String str=new String(bytes);
System.out.println("内容:"+str);
}
}

以上用到的相关方法简单解释

1.int available() 估计返回此文件字节数大小

2.int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b

案例5:输入流+输出流+File类实现文件的copy和动态移动

 static void copyFile() throws Exception{
File file=new File("E:/ch01.txt");
if(file.exists()){
//构建一个输入流
InputStream in=new FileInputStream(file);
//构建一个输出流
OutputStream out=new FileOutputStream("E:/newFile.txt");
byte[] bytes=new byte[1024];
int temp=0;
while((temp=in.read(bytes))!=-1){
out.write(bytes);
}
out.flush();//刷新输出流缓存
out.close();//关闭输出流缓存
in.close();//关闭输入流缓存
}
}

注意:第10行,当读到文件末尾的时候会返回-1.正常情况下是不会返回-1的。

----------------------------------------------------------------------------------------------------------------------------------

总结:File类+IO流结合使用时非常常见的是对文件进行操作,这样可以对文件进行增删改查复制移动等操作都是可以的以上案例只能让你了解一些基本入门操作

拓展:以下是File常用的方法

判断方法

1.boolean canExecute()判断文件是否可执行

2.boolean canRead()判断文件是否可读

3.boolean canWrite() 判断文件是否可写

4.boolean exists() 判断文件是否存在

5.boolean isDirectory()

6.boolean isFile()

7.boolean isHidden()

8.boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断

获取方法

1.String getName()

2.String getPath()

3.String getAbsolutePath()

4.String getParent()//如果没有父目录返回null

5.long lastModified()//获取最后一次修改的时间

6.long length()

7.boolean renameTo(File f)

8.File[] liseRoots()//获取机器盘符

9.String[] list()

10.String[] list(FilenameFilter filter)

拓展:以下是关于IO流的关系图

IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为InPutStream和OutPutStream)和字符流(抽象基类为Reader和Writer)。根据流向不同,可以分为:输入流和输出流。  其中主要结构可以用下图来表示:

完结.....

《成功在于坚持》

Java_IO流_File类配合使用(其中用到了递归)的更多相关文章

  1. IO流_File类

        流(stream):流是一连串流动的数据(字节.字符),以先进先出的方式发送的信息的通道中.    输入流   数据从源数据源流入程序的过程称为输入流.可以理解为从源数据源读取数据到程序的过程 ...

  2. java ->IO流_File类

    IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...

  3. 09、IO流—File类与IO流

    目录 一.File类 基本认识 实用方法 获取功能 重命名功能(包含剪切) 判断功能 创建.删除文件 实际小案例 二.IO流 1.认识IO流 2.IO流基类介绍 字节流基类介绍 字符流基类介绍 三.节 ...

  4. Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)

    一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ...

  5. 转换流--OutputStreamWriter类与InputStreamReader类

    12.4  转换流--OutputStreamWriter类与InputStreamReader类 整个IO包实际上分为字节流和字符流,可是除了这两个流之外,还存在一组字节流-字符流的转换类. Out ...

  6. Java学习笔记33(IO:打印流,IO流工具类)

    打印流: 有两个类:PrintStream     PrintWriter类,两个类的方法一样,构造方法不一样 PrintStream构造方法:接收File类型,接收字符串文件名,接收字节输出流(Ou ...

  7. 文件流FileStram类

    本节课主要学习三个内容: 创建FileStram流 读取流 写入流 文件流FileStram类,是用来实现对文件的读取和写入.FileStram是操作字节的字节数组,当提供向文件读取和写入字节的方法时 ...

  8. Java常用工具类之IO流工具类

    package com.wazn.learn.util; import java.io.Closeable; import java.io.IOException; /** * IO流工具类 * * ...

  9. .net System.IO.Stream 流操作类(FileStream等)

    Stream 是所有流的抽象基类.流是字节序列的抽象概念. 流涉及到的3个基本操作: 读取流,读取是指从流到数据结构(如字节数组)的数据传输. 写入流,写入是指从数据结构到流的数据传输. 流查找,查找 ...

随机推荐

  1. 该不该在C#中使用var关键词

    作为一个并不勤快的程序猿,在项目开发过程中总是想尽办法少写代码,对var关键词的使用自然不会放过,几乎在每个能使用var的地方都用了var,对此,很多朋友同事给出了不同的建议,觉得能不使用var关键词 ...

  2. XVI Open Cup named after E.V. Pankratiev. GP of Ekaterinburg

    A. Avengers, The 留坑. B. Black Widow 将所有数的所有约数插入set,然后求mex. #include<bits/stdc++.h> using names ...

  3. REGEXP 正则的实现两个字符串组的匹配。(regexp)

    主要懂3个mysql的方法:replace[替换]   regexp[正则匹配]    concat[连接]   由于某些原因,有时候我们没有按照范式的设计准则而把一些属性放到同一个字符串字段中.比如 ...

  4. 【转】《从入门到精通云服务器》第四讲—DDOS攻击

    上周咱们深入分析了云服务器的配置问题,好了,现在手上有了云服务器之后,我们又不得不提它:DDOS攻击.这是所有运维者的心头痛,也是任何公司听闻后都将心惊胆战的强大对手.下面我们将用浅显易懂的方式讲述什 ...

  5. [8.2] Robot in a Grid

    Imagine a robot sitting on the upper left corner of grid with r rows and c columns. The robot can on ...

  6. Unity内存优化(贴图层面)

    聊聊近况: 距离上一篇文章已经过了好久,主要原因是我懒了.公司项目也到了开始优化的阶段,上网找的资料,看过了就忘.还是想把它整理一下,写出来.其实我说的东西,网上都有,我只是搬运工而已. 贴图压缩: ...

  7. chm文件索引丢失和不能搜索

    regsvr32 hhctrl.ocx regsvr32 itss.dll regsvr32 itircl.dll

  8. [IOS]使用了cocoapods 抱错Pods was rejected as an implicit dependency for ‘libPods.a’ because its architectures ......

    Pods was rejected as an implicit dependency for ‘libPods.a’ because its architectures ‘i386’ didn’t ...

  9. dfs判断连通图(无向)

    在图论中,连通图基于连通的概念.在一个无向图 G 中,若从顶点vi到顶点vj有路径相连(当然从vj到vi也一定有路径),则称vi和vj是连通的.如果 G 是有向图,那么连接vi和vj的路径中所有的边都 ...

  10. 关于IOS浏览器:document,body的click事件触发规则

    今天做了个手机页面,点击某个按钮->弹出菜单,再点击菜单以外的任意位置->关闭菜单,在其他浏览器里面没有问题,但是在IOS浏览器中并不会关闭. 网上解决这个bug的帖子很多,这篇帖子主要是 ...