第一: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. winform下的简易播放器

    编写这个播放器,遇到很多问题,比如目前只实现了wav音频文件的播放,而对于这个图中中间所标注的按钮 不能实现让其暂停的功能,同时当点击的时候,让其文本变为"▷",对于这部分功能不知 ...

  2. linux 用户管理

    linux 用户管理 创建一个用户 foo 这个用户只能在/home/foo 上面增加删除文件, foo 不能在其他目录加减文件 useradd -d /home/foo -m foo [root@] ...

  3. 【ORACLE】字符串操作 B字符串时A的一部分

    select * from a where instr(a,b)>0;用于实现B字段是A字段中的某一部分的时候,要论顺序或者要相邻的字符. 如果想要不论顺序或者不相邻的字符时,定义函数可以实现: ...

  4. Rust语言的多线程编程

    我写这篇短文的时候,正值Rust1.0发布不久,严格来说这是一门兼具C语言的执行效率和Java的开发效率的强大语言,它的所有权机制竟然让你无法写出线程不安全的代码,它是一门可以用来写操作系统的系统级语 ...

  5. MLlib决策树与集成树

    决策树是一种常见的分类与回归机器学习算法,由于其模型表达性好,便于理解,并能取得较好的效果,而受到广泛的应用.下图是一个简单的决策树,决策树每个非叶子节点包含一个条件,对于具有连续值的特征,该条件为一 ...

  6. 代码-->发呆

    代码,敲着敲着,就发呆了. 其实安安静静敲代码,是一种享受.开着不快不慢的音乐,徜徉在代码的世界里,忘记了时间的存在. 原本备忘录中提醒我13点看书,一小时又一小时的延后,已经不记得自己按了多少次一小 ...

  7. Python之路Day16--JavaScript(二)

    本节内容: 1.上节内容回顾 2.JavaScript补充 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 一.上节内容回顾 1.作业问题: a.页面布局不好 ...

  8. Oracle数据库操作

    本例使用oracle数据库,使用PL/SQL可视化工具: --查询员工表数据 (emp为pl/sql自带的表,也可自己新建)select * from emp; --创建表空间create table ...

  9. Lua游戏时区问题

    关于cocos2dx-lua版本中游戏时间显示问题 2015-04-19 19:07 1466人阅读 评论(0) 收藏 举报  分类: Lua(29)   cocos2d(38)  版权声明:本文为博 ...

  10. php面试 1013总结

    面试题1:http://www.docin.com/p-288430879.html 数据库优化: session和cookies区别 缓存系统有哪些 myisam和InDB读写区别 varchar和 ...