-
RandomAccessFile类:java提供的对文件内容的访问类,既可以读文件,也可以写文件。RandomAccessFile支持随机访问文件,可以访问文件的任意位置。 (1)Java文件模型: 在硬盘上的文件是字节byte存储的,是数据的集合。 (2)打开文件: 有两种模式"rw"(读写)、"r"(只读)。 RandomAccessFile raf = new RandomAccessFile(file,"rw"); 因为为随机访问文件,所以内部含有一个文件指针,打开文件时指针在开头pointer = 0;指针会随着读写操作移动。 (3)写方法: raf.write(); //只写一个字节(后8位),同时指针指向下一个位置,准备再次写入。要输入较大的数时,要用到移位操作。 (4)读方法: raf.read(); //从指针在的位置读一个字节。必须把指针移到头部。 (5)文件读写完成以后一定要关闭查看全部
-
字符流: JAVA的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) 文件是byte数据序列,文本文件是(char)文本序列按照某种编码方案(gbk,utf-8,utf-16be)序列化为byte的存储。 字符流Reader和Writer操作的是文本文件。字符的处理,一次处理一个字符。 字符的底层依然是基本的字节序列。 InputStreamReader--->(按照编码)完成byte解析为char. OutputStreamWriter--->(按照编码)完成char到byte查看全部
-
FileInputStream/FileOutputStream: 按字节读写,较慢。 DataInputStream/DataOutputStream:包装了数据类型(int,double,char等),将new的FileInputStream/FileOutputstream对象传入,进行读写操作. BufferedInputStream/BufferedOutputStream: 创建缓冲区存取数据,提高读写效率。查看全部
-
1123查看全部
-
定义一个字节数组来接收读入的数据,并返回一个接收到的字节个数。 1、byte[] buf=new byte[自定义容量大小];如:[20*1024].... 2、int by=in.read(buf,起始位置,buf.length); 输出时,循环:for(int i=0;i<by;i++){ }; 注:i<by即是输出实际读到个字节个数,因为读到最后,数组中不一定是满的,所以不用i<buf.length查看全部
-
继承了Inputstream、Outputstream输入输出流类。 1、输入时:用一对应的数据类型变量接收读入的内容。如int a=in.read(); 或者定义一个字节数组,将读入的数据填充进去。如:in.read(byte[] buf); 也可以将读入的数据填充到字节数组的指定开始位置,和要填充的数据长度。 如:in.read(byte[] buf, int start, int size).查看全部
-
RadomAccessFile类对文件进行读写操作。 数据是按byte存储的,RadomAccessFile类的write和read方法,每次读一个字节或写一个字节。FilePointer指针指向读写位置。(通过RadomAccessFile对象获取指针位置)。 完成读写操作后,通过RadomAccessfile对象关闭操作。 例:RadomaccessFile rw=new RadomAccessFile(文件名,“rw”或“r”); rw.getFilePointer();------>获取指针位置。 rw.close();---------------->关闭。 File类创建或打开一个文件,RadomAccessFile类进行读写操作。查看全部
-
File类中的list方法返回的是一个String数组。 listFile方法返回的是文件数组,在接收后,可以继续判断该返回的数组是否有内容,是否为文件夹,做递归操作,直到列出所有文件。查看全部
-
递归遍历目录。查看全部
-
File类用于表示和判断文件(目录)的存在与否,大小,名称,路径等信息。不能用于文件内容的访问操作。 创建对象:File f=new File("文件名或目录等");查看全部
-
每个项目都有一个默认的字符集。在从其他项目复制文件过来时,要注意字符序列问题。 gbk字符序列:一个中文占用2个字节,英文占1个字节; utf-8字符序列:一个中文占用3个字节,英文占1个字节; utf-16be字符序列:中文和英文各占用2个字节。查看全部
-
计算程序运行时间: long start=System.currentTimeMillis(); long end=System.currentTimeMillis(); System.out.println(end-start);查看全部
-
文件拷贝 public static void copyFile(File srcFile,File destFile)throws IOException{ if(!srcFile.exists()){ throw new IllegalArgumentException("文件"+srcFile+"不存在"); } if(!srcFile.isFile()){ throw new IllegalArgumentException(srcFile+"不是文件"); } FileInputStream in = new FileInputStream(srcFile); FileOutputStream out = new FileOutputStream(destFile); byte[] buf =new byte[8*1024]; int b; while((b=in.read(buf,0,buf.length))!=-1){ out.write(buf, 0, b); out.flush();//最好加上 } in.close(); out.close(); System.out.println("复制完成"); }查看全部
-
换成双斜杠,转义字符查看全部
-
public static void printHexByByteArray(String fileName)throws IOException{ FileInputStream in = new FileInputStream(fileName); byte[] buf = new byte[20 * 1024]; //从in中批量读取字节,放入到buf这个字节数组中,从第0个位置开始放,最多放buf.length个,返回的是读到的字节的个数 int bytes = in.read(buf,0,buf.length);//一次性读完,说明字节数组足够大 int j =0; for(int i = 0;i < bytes;i++){ if(buf[i] <= 0xf){ System.out.print("0"); } System.out.print(Integer.toHexString(buf[i]) + " "); if(j++%10==0){ System.out.println(); } } }查看全部
举报
0/150
提交
取消