张孝祥java视频学习笔记(七)

来源:互联网 发布:java continue跳几层 编辑:程序博客网 时间:2024/05/16 05:46

第七讲 IO/输入输出(上)

File(将文件在编译其上面转移时先把文件前面输入文件夹名在输入两个斜杠)

Modified返回的是long型的不是字符串要用new Date将其转换成为字符串

Delete没有运行 exist方法没有检测出文件是否存在 我们应该进入命令行中再运行

Txt文件可以消除可以新建)

 

File类是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容(设置日期)

File类定义了一些与平台无关的方法来操纵文件,例如创建、删除文件和重命名文件。

Java可以正确处理UnixDos的路径分隔符,可以混淆表示文件目录的正斜杠和反斜杠。

创建举例,判断某个文件是否存在,存在则删除,不存在就创建

delete方法由File对象的路径所表示的磁盘文件或目录,如果删除的对象是目录,则该目录中的内容必须为空。

RandomAccessFile(最丰富的文件访问类)

RandomAccessFile类支持“随机”访问,(可以跳转到文件的任意位置读取对象,其中有个指示器,文件指示器会指向当前位置开始读写,如果不想从头开始读写文件这是最好的方法)但该类仅限于操作文件,不能访问其他的IO设备如网络、内存映像等。

RandomAccessFile类在随机读写等长记录格式(每一条记录信息长度一样,字段信息)的文件时有很大的优势。

两种构造方式:new (f.”rw”)//读写方式

              new RandomAccessFile(f.”r”)//只读方式

例子:写入三个员工的信息,每个员工的姓名 年龄两个字段然后按照第二名 第一名 第三名的顺序读取信息(年龄大小事固定的不用考虑,要考虑姓名长短超过时截取长度,不够时用空格(\u0000)来填充)

Write只写入一个字节此时要是超过一个自己又想全部显示出来应该写入writeInt

本可以直接读 但是读和写没有关系的话要重新建一个对象

如果要跳过第一个读取第二个,此时的我们就要跳转字节姓名是八个自己 年龄是整数4个字节 . .skipBytes(12);

在读取名字的时候想要去除字符串中不可见的字符可以调用名字中的trim()方法

如果姓名中出现了,中文名字年龄会变成0,那是应为通过getByte的方法转换中英文占一个字节,中文占用两个字节 此时的我们在读取名字的时候就不能读取字符串的方式来读取,应该是通过writeChars()方法来写出来 读的时候就要一个字节一个字节的读此时就用FOR循环语句来表示 编译时会出现乱码现象 那是因为我们在编写时writeChars()是 编码占两个字节此时的长度在跳转时是其的两倍 然后每次读取完后应该将前面的字符串清空再读取就没有运行的问题了

 

节点流类(用于直接操作目标设备的对应设备)

过滤流类(处理流类(

流是字节序列的抽象概念。(用统一的方式

文件是数据的静态存储形式,永久存储,而流是指数据传输时的形态。文件是流操作的一种IO操作设备。数据流是一种连续不断的

InputStream(二进制格式)

程序可以从中连续读取字节的对象叫输入流,在Java中,用InputStream类来描述所有输入流的抽象概念。它没有对应到对应的具体流设备,只描述了各种流设备输入的通用方法。对于文件,网络~~~只是它的子类,并不是所有的子类都支持InputStream类中定义的方法

类方法

1)int read() 从输入流中读取一个字节,然后将这个字节以一个整数的形式返回。如果碰到流的结束处返回的是-1,如果没有结束并没有内容可以读,此时会出现堵塞的结果直到流中有可读的数据。Read读取的数据复制到int上面的时候,只是将其转换成为最低的字节当中,高字节转换成0.以二进制11111111型式byte形式表示为-1,以int形式表示为255.此方法的好处是最大值为255,最小值为1,与结束返回的-1区分开来。

2)int readbyte[] b)用于从输入流中读取若干个字节,由于流中不一定有这么多个字节数组,以read的长度为准,只要读到就可以返回不会堵塞

3)Int readbyte[] b,int off, int len

4)Long skiplong n)跳过字节流中的N个字节,并返回跳过的实际字节数。主要用于包装流中,

5)Int available()这个返回当前字节流可以读取的字节数 。一次读取尽可能多的数据,读取之后查询是否还有,这个方法必须由继承InputStream类的子类对象调用才有用

6)Void markint readlimit)在输入流中建立一个标记,建立一个标记后可加入一个参数,表示此时最多你还可以读取多少个字节的内容 用于包装流

7)Void reset ()是与上面的配合一起用的 让指针回到标记处。主要用于包装流

8)Boolean markSupported() 返回当前的流对象是否支持标记

9)Void close()关闭当前的程序,释放出空间

0 0
原创粉丝点击