Java核心API -- 10(File、RandomAccessFile)

1. File文件类

java使用File类(java.io.File)表示操作系统上文件系统中的文件或目录。换句话说,我们可以使用File操作硬盘上的文件或目录进行创建或删除。

File可以描述文件或目录的名字,大小等信息,但不能对文件的内容操作!File类的构造器都是有参的。

1)关于路径的描述:不同的文件系统差异较大,Linux和Windows就不同!最好使用相对路径,不要用绝对路径。

2)“.”代表的路径:当前目录(项目所处的目录),在eclipse_workspace/project_name下,File.separator:常量,目录分隔符,推荐使用!根据系统自动识别用哪种分割符,windows中为/,Linux中为\。

3)创建该对象并不意味着硬盘上对应路径上就有该文件了,只是在内存中创建了该对象去代表路径指定的文件。当然这个路径对应的文件可能根本不存在!

4)createNewFile()中有throws声明,要求强制捕获异常!

5)新建文件或目录:

① boolean mkdir():只能在已有的目录基础上创建目录。

② boolean mkdirs():会创建所有必要的父目录(不存在的自动创建)并创建该目录。

③ boolean createNewFile():创建一个空的新文件。

6)创建目录中文件的两种方式:

① 直接指定文件需要创建的位置,并调用createNewFile(),前提是目录都要存在!

② 先创建一个File实例指定文件即将存放的目录,若该目录不存在,则创建所有不存在的目录,再创建一个File实例,代表data.dat文件,创建是基于上一个代表目录的File实例的。使用File(File dir,String fileName)构造方法创建File实例,然后再调用createNewFile():在dir所代表的目录中表示fileName指定的文件。



案例17:



7)查看文件或目录属性常用方法

① long length():返回文件的长度。

② long lastModified():返回文件最后一次被修改的时间。

③ String getName():返回文件或目录名。 ⑧String getPath():返回路径字符串。

④ boolean exists():是否存在。        ⑨boolean isFile():是否是标准文件。

⑤ boolean isDirectory():是否是目录。 ⑩boolean canRead():是否可以读取。

⑥ boolean canWrite():是否可以写入、修改。

⑦ File[] listFiles():获取当亲目录的子项(文件或目录)



案例18:



8)删除一个文件:boolean delete():①直接写文件名作为路径和"./data.dat"代表相同文件,也可直接写目录名,但要注意第2条。②删除目录时:要确保该目录下没有任何子项后才可以将该目录删除,否则删除失败!



案例19:



2. RandomAccessFile随机访问文件流

可以方便的读写文件内容,但只能一个字节一个字节(byte)的读写8位。

1)计算机的硬盘在保存数据时都是byte by byte的,字节埃着字节。

2)RandomAccessFile打开文件模式:rw:打开文件后可进行读写操作;r:打开文件后只读。

3)RandomAccessFile是基于指针进行读写操作的,指针在哪里就从哪里读写。

① void seek(long pos)方法:从文件开头到设置位置的指针偏移量,在该位置发生下一次读写操作。

② getFilePointer()方法:获取指针当前位置,而seek(0)则将指针移动到文件开始的位置。

③ int skipBytes(int n)方法:尝试跳过输入的n个字节。

4)RandomAccessFile类的构造器都是有参的。

① RandomAccessFile构造方法1,参数是文件

RandomAccessFile raf=new RandomAccessFile(file,"rw");

② RandomAccessFile构造方法2,参数是字符串路径(文件名)

RandomAccessFile raf=new RandomAccessFile("data.dat","rw");

5)读写操作完了,不再写了就关闭:close();

6)常用方法

写方法

① write(int data):写入第一个字节,且是从低8位写。

② write(byte[] data):将一组字节写入。

③ write(byte[] data.int offset,int length):从data数组的offset位置开始写,连续写length个字节到文件中。

④ writeInt(int):一次写4个字节,写int值。

⑤ writeLong(long):一次写8个字节,写long值。

⑥ writeUTF(String):以UTF-8编码将字符串连续写入文件。

读方法:

① int read():读一个字节,若已经读取到文件末尾,则返回-1。

② int read(byte[] buf):尝试读取buf.length个字节。并将读取的字节存入buf数组。返回值为实际读取的字节数。

③ int readInt():连续读取4字节,返回该int值

④ long readLong():连续读取8字节,返回该long值

⑤ String readUTF():以UTF-8编码将字符串连续读出文件,返回该字符串值



案例20:



7)RandomAcceccFile执行复制操作:读取一个文件,将这个文件中的每一个字节写到另一个文件中就完成了复制功能。



案例21:



本文出自 “永远年轻” 博客,请务必保留此出处http://kingkongzhao.blog.51cto.com/6319491/1670902

时间: 2024-11-06 22:56:12

Java核心API -- 10(File、RandomAccessFile)的相关文章

Java核心API需要掌握的程度

分类: java技术2009-08-29 01:03 213人阅读 评论(0) 收藏 举报 javaapiswingxmlio Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻. 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了. 1.java.lang包下的80%以上的类的功能的灵活运用. 2.java.util包下的80%以上的类的灵活运用,特别是集合类体系.正规表达式.时间.属性.和Timer. 3.jav

Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1)Iterator定义有三个方法: ①boolean hasNext()方法:判断指针后面是否有元素. ②E next()方法:指针后移,并返回当前元素.E代表泛型,默认为Object类型. ③void remove()方法:在原集合中删除刚刚返回的元素. 2)对于List集合而言,可以通过基于下标的

Java核心API -- 2(String、StringBuilder、StringBuffer)

1. String字符串 1)String类型介绍 String类采用final修饰,String对象为不可变对象,一旦在内存中创建,内容不能发生变化,若要对字符串内容改变,那么就会创建新对象. String对象创建,有静态和动态之分. String str1 = "dadsadad"; String str2 = new String("dasdasdadad"); 2)String常量池 JVM对字符串有一个限制,让字符串作为不变对象,这样就可以做到重用.事实上

Java核心API -- 3(正则表达式)

1.正则表达式 正则表达式就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求. 1)"."和"\" "."点儿,在正则表达式中表示任意一个字符. "\"在正则表达式中是转意字符,当我们需要描述一个已经被正则表达式使用的特殊字符时,我们就可以通过使用"\"将其转变为原本的意思. "\"在正则表达式中也有一些预定义的特殊内容: \d:表

Java核心API -- 1(Object类)

1. Object类 在Java体系中,java.lang.Object类位于顶端(是所有对象的直接或间接父类).如果一个类没有写extends关键字声明其父类,则该类默认继承java.lang.Object类.Object类定义了"对象"的基本行为,被子类默认继承. 1)toString方法:返回一个可以表示该对象属性内容的字符串. MyObject obj=new MyObject();    // MyObject类自定义 String info=obj.toString();

Java核心API -- 6(Collection集合List、Set、ArrayList、HashSet)

1. Collection集合框架 Java.util.Collection接口 |--List子接口 |--ArrayList实现类 |--LinkedList实现类 |--Vector实现类 |--Stack(栈,继承Vector,先进后出) |--Set子接口 |--HashSet实现类 |--TreeSet实现类 |--Queue接口(普通队列,先进先出) |--Deque子接口(双端队列) |--ArrayDeque实现类 2. 泛型 1)泛型是 JDK1.5引入的新特性,泛型的本质是

Java核心API -- 9(异常)

异常处理 异常结构中的父类Throwable类,其下子类Exceptionlei类和Error类.我们在程序中可以捕获的是Exception的子类异常. Error系统级别的错误:Java运行时环境出现的错误,我们不可控. Exception是程序级别的错误:我们可控. 1)捕获异常两种方式: 一是添加try-catch捕获该异常,二是在我们的方法中声明出也追加这种异常的抛出(继续往外抛). 2)异常处理语句:try-catch,如果try块捕获到异常,则到catch块中处理,否则跳过忽略cat

Java核心API -- 11(IO流)

1. IO流 1)根据方向分为: 输入流和输出流.方向的定了是基于我们的程序的.流向我们程序的流叫做:输入流:从程序向外流的叫做:输出流 2)流根据源头分为: 基本流(节点流):从特定的地方读写的流类,如磁盘或一块内存区域.即有来源. 处理流(高级流.过滤流):没有数据来源,不能独立存在,它的存在是用于处理基本流的.是使用一个已经存在的输入流或输出流连接创建的. 3)流根据处理的数据单位不同划分为: 字节流:以一个"字节"为单位,以Stream结尾 字符流:以一个"字符&qu

Java核心API -- 14(Socket)

1. Socket相关概念 1)网络通信模型:C/S:client/server,客户端/服务器端:B/S:browser/server,浏览器端/服务器端:C/S结构的优点:应用的针对性强,画面绚丽,应用功能复杂.缺点:不易维护.B/S结构的优点:易于维护.缺点:效果差,交互性不强. 2)Socket:封装着本地的地址,服务端口等信息.ServerSocket:服务端的套接字. 服务器:使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些