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范围内的为英文字母,超过这个范围的为汉字。