Java高级视频:
输入与输出I/O :
一、知识点:
(1)、键盘,特殊的输入设备;显示器,特殊的输出设备;
· File类是IO包中唯一代表磁盘本身信息的类,但不是文件本身,只是一个引用。它定义了一些与平台无关的方法来操纵文件,Java中的目录被当做
一种特殊的的文件使用, File类对象的list方法可以返回目录中所有的子目录和文件名。
· 在Unix下的路径分隔符为:"/",而在Dos下的路径分隔符为:"/",Java可以正确的理解Unix 和 Dos的路径分隔符,即,与平台无关。
(2)、RandomAccessFile类:
· 该类提供了众多的文件访问方法,支持随机访问方式,该对象中有个叫指示器的标志,可以跳转到文件的任意位置,都是从该指示器所指示的当前
位置开始读写的。
· 在文件流File来读写文件的时候:必须一个一个字节的顺序读写,不能跳跃读写后面的流内容。 而RandomAccessFile则是可以直接将磁头跳转到下
一个指定的位置开始读取,而不需要顺序的读取流前面的内容。
· RandomAccessFile类仅限于操作文件,不能访问其他的I/O设备,如网络、内存映像等~
· RandomAccessFile类有两种构造方法:
1、new RandomAccessFile(file,"rw"); // r读方式,w写方式
2、new RandomAccessFile(file,"r"); // r只读方式
· 利用RandomAccessFile类的读写方法读写文件的时候,共享一个文件指示器,即只有一个文件指示器。
·
·
(3)、在Java中,不管是中文字符还是英文字符,他们都是一个字符,都是占用两个字节。
但是,本地的计算机ASCII编码中,英文字符只占用一个字节,而中文字符占用两个字节。当我们使用getBytes()方法时,获得字符串的字节数组的时候
,会自动转换成本地的字符编码。即: 如果原来的是英文字母,则利用getBytes方法得到的将是占用一个字节的输出,如果是中文字符,则得到的将是
两个字符的输出。
二、问题与收获:
(1)、逗号表达式中,如果前面有多个操作符号,那么我们需要将逗号表达式括起来,否则很容易混淆: 如
"这里的语句1" + aFile.canRead()?"canRead":"cannotRead" + "这里的语句2" ,有语句1的语段,必须将后面的逗号表达式括起来,否则,根据逗号表
达式的运算等级,?前面的所有的表达式都将作为一个表达式。
(2)、在利用流来读写文件的时候:必须一个一个字节的顺序读写,不能跳跃读写后面的流内容。
(3)、java中默认用的是Unicode字符,而在本地机子上的是8位编码字符(单个字节)。
ASCII编码:采用7位二进制表示,最高位为0,范围为0~127,足以表示所有的英文字母,则这8位即我们常说的8位字符编码。即单字节
Unicode字符:采用双字节编码,0~127范围内的为英文字母,超过这个范围的为汉字。