JAVA IO操作目标
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第1张图片
本季知识点
1、File类
2、RandomAccessFile类
File类
image
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第2张图片
在JAVA中所有的IO操作全部存放在java.io包中。
File是唯一一个与文件本身有关的操作。
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第3张图片
在使用File类的构造方法处必须加入一个完整的路径。
要求一:可以在F盘上建立一个新的文件:demo.txt文件。
public boolean createNewFile() throws IOException
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第4张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第5张图片
看下效果:
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第6张图片
我们发现系统提示非法转义字符,在前面学习正则时“\”表示转义,我们需要输入两个“\\”即“f:\\demo.txt”
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第7张图片
image
需要进行try/catch处理
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第8张图片
现在发现文件出来了哈~
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第9张图片
如果现在再想创建同一个文件,我们会发现显示false,因为文件已经存在,不能再创建同一文件哈~
image
能否删除掉demo.txt的文件呢?
public boolean delete()
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第10张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第11张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第12张图片
要求:
如果文件存在则删除掉文件,如果文件不存在,则创建文件。
判断文件是否存在: public boolean exists()
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第13张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第14张图片
注意点:
如果程序按以上格式写的话,则会有一个限制:
· windows:\
· linux:/
File类中提供了几分割符
public static final String separator
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第15张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第16张图片
public String getPath()
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第17张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第18张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第19张图片
判断给定的路径是否是一个目录: public boolean isDirectory()
  [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第20张图片
  [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第21张图片
显示f:\demo.txt不是目录哈~
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第22张图片
再来看一个:
  [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第23张图片
显示F:\TL-WN310G& TL-WN350G是目录哈~
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第24张图片
通过这个方法可以判断给定的路径是否是目录哈~
要求可以列出指定目录下的全部文件。
· 返回完整路径: public String[] list() ;
· 返回全部的File对象: public File listFiles() ;
1、使用字符串数组操作
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第25张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第26张图片
可以正常列出F:\资料目录下的文件和目录哈~
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第27张图片
2、使用File类对象数组
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第28张图片
使用File类可以开出路径哈~
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第29张图片
思考题:
image
不断的判断给定的路径是否是目录,如果是目录,则继续向下列出,此种题目只能使用递归操作完成。
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第30张图片
看下效果:
  [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第31张图片
  [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第32张图片
注意:递归操作可能会导致内存泄漏问题~~~
输入输出方法
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第33张图片
读写过程
  [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第34张图片
RandomAccessFile
  [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第35张图片
假设一个文件中存放了三组数据:
AA          80
BB          90
CC          99
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第36张图片
RandomAccessFile类
public RandomAccessFile( File file, String mode) throws FileNotFoundException
public RandomAccessFile(File file,               --> File 类的实例化对象
String mode)                                                --> 模式
throws FileNotFoundException
模式现在主要用两种:
· r:只读
· w:只写
· rw:读写            
  --> 如果没有文件,写时,会自动创建。
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第37张图片
public final void writeBytes(String s) throws IOException
public final void writeInt(int v) throws IOException
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第38张图片
看下效果:
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第39张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第40张图片
现在我们可以写入数据了,下面我们将其读出来哈~
实际上读的时候只能按byte读出,byte只能一个一个的往外读。
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第41张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第42张图片
如果读完第一个人的数据,则此时指针在第二个人之前,如果继续往下读则会读取第二个人的数据,我们测试一下哈~~
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第43张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第44张图片
如果我们想不读取第一个人的数据,直接读取第二个人的数据,看下面哈~~
public final byte readByte() throws IOException
public int skipBytes(int n) throws IOException
public void seek(long pos) throws IOException
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第45张图片
看下效果,直接读取第二个人数据了哈~
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第46张图片
如果要读取第三个人数据就是跳过16个字节哈~ raf1.skipBytes(16);
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第47张图片
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第48张图片
现在我们是一直往下读哈,我们要使指针往回读取数据呢?
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第49张图片
看下效果:
[零基础学JAVA]Java SE应用部分-27.Java IO操作(01)_第50张图片
虽然此类可以比较灵活的实现读写操作,可是也是有缺点的,因为必须知道的其跳的长度。
真正开发中使用的数据读取类: InputStream、OutputStream、Reader、Writer ,下季再见分晓哈~~~~
##############################################################