zoukankan      html  css  js  c++  java
  • IO_RandomAccessFile

    RandomAccessFile类不属于流,是Object类的子类
    RandomAccess支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。
    已有文件作为RandomAccessFile打开的时候,这个文件并不会被删除。

    read方法只读流中的数据,字节数据在网络中传输,数据可能刚到接收端(存储在TCP接收缓冲区)的可能只是其中一部分数据,其他还在路上或还没发,read读到就走,接收到的可能只是数据的一部分。readFully方法会阻塞等待,知道数据缓冲区装满。不过如果不是确定要用特定长度的数据,还是用read方法去读取。

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    
    public class RandomAccessFileJava {
    	public static void main(String[] args) throws IOException {
    		//创建文件
    		String strFile = "d:" + File.separator + "javatest" + File.separator + "IO_RandomAccessFileTest.txt";
    		File f = new File(strFile);
    		try(RandomAccessFile raf = new RandomAccessFile(f, "rw");) 
    		{
    			//byte[] b = "写入数据...".getBytes();
    			//raf.write(b);
    			//boolean b = true;
    			//直接打开文件看到的是乱码
    			//raf.writeBoolean(b);
    			//String s = "写入数据...";
    			//raf.writeUTF(s);
    			//System.out.println(raf.readUTF());
    			//readLine()方法读到的数据是ISO-8859-1,如果有中文会显示乱码,需要进行转码
    			
    			//下面这样很可能读到的数据控制台输出的时候会产生漏行,因为readLine()每次读取一行,在while()条件中读取了一次,这里是不会输出的
    			//只有println方法中的println才会输出
    			while(raf.readLine() != null) {
    				System.out.println(new String(raf.readLine().getBytes("ISO-8859-1"),"utf-8"));
    			}
    			
    			//所以要改为
    			String ss = null;
    			while((ss = raf.readLine()) != null) {
    				System.out.println(new String(ss.getBytes("ISO-8859-1"),"utf-8"));
    			}
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    
  • 相关阅读:
    jquery target属性 语法
    jquery result属性 语法
    jquery preventDefault()方法 语法
    jquery pageY属性 语法
    jquery pageX属性 语法
    jquery pageX属性 语法
    jquery isDefaultPrevented()方法 语法
    jquery error()方法 语法
    jquery die()方法 语法
    jquery die()方法 语法
  • 原文地址:https://www.cnblogs.com/changzuidaerguai/p/9275896.html
Copyright © 2011-2022 走看看