疯狂Java学习笔记(019) 输入/输出:IO

变长参数方法:

  • 方法定义时,再参数列表中出现的“类名。。。变量名”形式的参数定义,就是变长参数。
  • 修饰符 返回值类型 方法名(参数类型...变量名){ }
  • 如何传参?
  • 实际上传递的就是一个指定类型的数组
  • 方法体内就是把若干个参数组织成一个数组!
  • 注意:当变长参数和普通参数同时出现时,变长参数一定放到参数列表的最后。

一、输入/输出:

1.IO:File类

  • 位于java.io包下,用于表示与平台无关的文件和目录
  • File类可以用来操作文件和目录,但是不能用来访问文件的内容,是磁盘上的目录或文件的抽象表示形式,即可用来表示文件,也可以用来表示目录。

2.构造方法

  • File(String pathName)通过将给定路径名字符串转换为抽象路径名类创建一个新File实例;
  • File(String parent,String child)根据parent路径名字符串和child路径名字符串创建一个新File实例
  • File(File parent,String child)根据parent抽象路径名和child路径名字符串创建一个新File实例
  • 例如:(右斜杠\也称反斜杠 ,在路径中“/”等于“\ ”)
  • File f1 = new File("c:/code14")
  • File f2 = new File("c:/","code14")
  • File f3 = new File(f1,"day10")

3.File类

构造对象时的注意事项:

  对象的上层路径如果不存在的化,在创建对象时会报错:

  对象要想创建成功,其父File对象(肯定时一个目录)必须存在

  • 例子:File f = new File("z:\a.txt");  //如果z盘不存在的话,在使用f创建文件的时候将报错
  •    boolean res = f. createNewFile( );
  •    File f = new File("a.txt");//如果不指定盘符的话,将默认指定项目路径创建

4.File类

创建功能:

  • boolean createNewFile( ),创建此抽象路径名指定的文件,返回值是否成功。首先z盘情况,已经有了a.txt。
  • boolean mkdir ( ),创建此抽象路径名指定的目录,只创建最后一级目录
  • boolean mkdirs( ),创建此抽象路径名指定的目录,包含必须的父File对象若不存在也一并创建
  •   注意事项:.txt结尾的不一定是文件,也可能是文件夹,在于是用那个方法创建的。

删除功能:

  • boolean delete()删除此抽象路径名表是的文件或目录
  •   注意事项:1.java中删除内容不会进入回收站,直接删除
  •        2.删除的文件夹中不能包含内容

重命名:

  • boolean renameTo(File dest)  重新命名到此抽象路径名表示的文件
  •   注意事项:想要改成的目标文件如果不在同一个目录的话,重命名就是剪切功能

判断功能:

  • boolean exits( )
  • boolean isDirectory( )
  • boolean isFile( )
  • boolean isHidden( )
  • boolean canRead( )
  • boolean canWrite( )  

获取功能:

  • String getAbsolutePath( )  //返回此抽象路径名的绝对路径名字符串
  • String getName( )  //返回由此抽象路径名表示的文件或目录的名称
  • String getPath( )  //将此抽象路径名转换为一个路径名字符串
  • String getParent( )  //返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null;即创建当前File对象时,指定的父路径!
  • long length( )  //返回由此抽象路径名表示的文件的长度:字节数
  • long lastModified( )  //返回此抽象路径名表示的文件最后一次被修改的时间

 高级获取功能:

  • String[ ] list( )  // 返回一个字符串数组,这些字符串指定由此抽象路径名表示的目录中的文件和目录名
  • File[ ] listFiles( ) //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示
  •   第二种方法是File对象,而对象有很多方法可供使用,因此更加灵活

练习:获取某个盘符下的指定类型的文件信息(只看单层目录)

  例:获取C盘下的所有jpg图片信息:大小,文件名

  思路:1,封装文件对象;2,获得它所有子File对象数组;3,遍历这个数组并判断

  补充第二种思路:

  在获得数组之前,就进行判断,这样得到的数组就都是满足条件的了,涉及到的接口:FilenameFilter

5.File类

批量更改某个文件夹下的文件名

  •   去掉某些标志
  •   添加某些标志

思路:

封装目录成File对象 

得到此对象下的所有File对象数组

遍历数组,并改名

6.递归,recursive

  递归:方法内部调用方法本身的格式

  特点:1.要有出口 2.次数不能太多 3.构造方法不能递归

  递归解决问题的思想:分解→汇总

样例:

1.递归求5的阶乘

2.不死神兔问题,斐波那契数列

3.递归查找某个目录下所有的txt文件

4.递归删除带内容的文件夹

7.IO(Input Output)流的概念

  • Java中将不同设备之间的数据传输抽象为“流”:Stream;
  • 设备指的是:磁盘上的文件,网络连接,另一个主机等等。
  • 源----------输入流----------Java程序-------输出流-------目标

8.IO流的分类

按流向分:输入流,输出流

1,都是针对内存来说的

2,输入流,只能从其中读取数据

3,输出流,只能把数据放入其中

9.按每次处理的数据单位分:字节流,字符流

  字节流:每次处理一个字节

  字符流:每次处理一个字符

10.IO流抽象基类

通常流的分类,如果么有特定指出,都是按操作数据单位来说的

字节流:两个方向

  • InputStream:
  • OutputStream

字符流:两个方向

  • Reader: 输入字符流
  • Writer:输出字符流

11.IO流分类 图示

 12.字节流的继承图

13.字节流 

  字节输出流抽象基类:OutputStream

  字节输出流操作步骤:

    • 创建输出流对象
    • 利用流写出数据
    • 关闭资源

 14.FileOutputStream实现类

构造方法:

  • FileOutputStream(File file):通过一个File对象创建一个文件输出流对象,默认时覆盖模式
  • FileOutputStream(String name):通过一个字符串构建一个文件输出流对象
  • FileOutputStream(File file,boolean append):通过文件对象创建文件输出流对象,并指定是否追加
  • FileOutputStream(String name,boolean append):通过一个字符串构建一个文件输出流对象,并指定是否追加

 15.FileOutputStream类的方法

写出数据到流对象:

void write (byte[ ] bytes)一次写一个字节数组的数据

void write(int b) 一次写一个字节

void write(byte[ ] bytes ,int off,int len)一次写一个字节数组的一部分

关闭流对象:

void close( )

  关闭此文件输出流并释放与此有关的所有系统资源

关闭流的两个作用:

1.让流不能再继续使用  2.释放和此流相关的系统资源

 FileOutputStream练习

1.如何实现写出数据的换行

2.如何实现写出数据的追加

16.InputStream的实现子类

常用实现子类:

FileInputStream

构造方法:

FileInputStream(File file) 通过File对象创建一个文件输入流对象

FileInputStream(String name) 通过一个字符串创建一个文件输入流对象

 方法:

一次读一个字节

int read( ):返回值就是本次读到的字节值!

一次读一个字节数组

int read(byte[ ] buf ):返回值表示本次读取到的有效字节数!!

一旦读到文件末尾,返回值是-1

关闭:

void close

17.字节输入流操作步骤:

  • 创建输入流对象
  • 利用流读入数据
  • 关闭资源
原文地址:https://www.cnblogs.com/akinodoo/p/9948719.html