输入输出:
File类:是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。 定义了一些与平台无关的方法来操作文件,例如:创建、删除、重命名等。 java中的目录被当做一种特殊的文件使用,list方法可以返回目录中所有子目录和文件名。RandomAccessFile类:支持随机访问方式。(对于流格式的文件,一般要从头开始读取,而通过此类,只需把文件指示器移动到要读取的位置即可) 1. 该类对象的内部有个文件指示器,可以从指定位置读取数据。(网络程序中的断点续传功能;FTP服务器中多线程下载的功能,第一个线程下载0-1K,第二个下载1-2K,然后组合) 2. RandomAccessFile类在随机(相对于顺序而言)读写等长记录格式的文件时有很大优势。 3. RandomAccessFile仅限于操作文件,而不能操作其他IO设备,如:网络、内存映像等。 一个文件中文件指示器只有一个不管是读还是写,都是以文件指示器的位置为开始位置进行读写。 在java中不管中文还是英文字符都是采用Unicode编码,则占用两个字节。但是在本地计算机中, 英文采用ASCII编码只占用一个字节,而中文占用两个字节。当使用getByes时英文在本地采用 一个字节表示,而中文采用两个字节表示public static void main(String[] args) { String strEng="a"; String strChi="我"; System.out.println(strEng.getBytes().length+"------>"+strChi.getBytes().length); System.out.println(strEng.toCharArray().length+"----->"+strChi.toCharArray().length); }
class Employee{ public final static int LEN=8; String name; int age; public Employee(String name,int age){ if(name.length()>LEN) this.name=name.substring(0, LEN); else{ while(name.length()"+age); //读取第一个 rafb.seek(0); rafb.read(buff); name=new String(buff); age=rafb.readInt(); System.out.println(name.trim()+"----------->"+age); //读取第三个 rafb.skipBytes(12); rafb.read(buff); name=new String(buff); age = rafb.readInt(); rafb.close(); System.out.println(name.trim()+"----------->"+age); }
当是中文:
class Employee{ public final static int LEN=8; String name; int age; public Employee(String name,int age){ if(name.length()>LEN) this.name=name.substring(0, LEN); else{ while(name.length()"+age); //读取第一个 rafb.seek(0); name=""; for(i=0;i "+age); //读取第三个 rafb.skipBytes(16+4); name=""; for(i=0;i "+age); }}
输入输出:
File类:是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。 定义了一些与平台无关的方法来操作文件,例如:创建、删除、重命名等。 java中的目录被当做一种特殊的文件使用,list方法可以返回目录中所有子目录和文件名。RandomAccessFile类:支持随机访问方式。(对于流格式的文件,一般要从头开始读取,而通过此类,只需把文件指示器移动到要读取的位置即可) 1. 该类对象的内部有个文件指示器,可以从指定位置读取数据。(网络程序中的断点续传功能;FTP服务器中多线程下载的功能,第一个线程下载0-1K,第二个下载1-2K,然后组合) 2. RandomAccessFile类在随机(相对于顺序而言)读写等长记录格式的文件时有很大优势。 3. RandomAccessFile仅限于操作文件,而不能操作其他IO设备,如:网络、内存映像等。 一个文件中文件指示器只有一个不管是读还是写,都是以文件指示器的位置为开始位置进行读写。