RandomAccessFile读文件与修改练习题

public class ShowAllUserDemo {
    
    
    public static void main(String[] args) throws IOException {
    
    
    
        RandomAccessFile raf = new RandomAccessFile("data.txt","r");
        for (int i = 0;i<raf.length()/100;i++) {
    
    
            byte[] data = new byte[32];

            //读取第一个32字节
            raf.read(data);
            String name = new String(data,"utf-8");
            System.out.println(raf.getFilePointer());//32

            raf.read(data);
            String pwd = new String(data,"utf-8");
            System.out.println(raf.getFilePointer()); //64

            //读取下一个32字节
            raf.read(data);
            String nick = new String(data,"utf-8");
            System.out.println(raf.getFilePointer());

            int age = raf.readInt();
            System.out.println(raf.getFilePointer());

            System.out.println(name+","+pwd+","+nick+","+age);
        }
    }
}
  • raf循环次数都是整百为单位,除以100就是循环几次。

修改用户名练习

/*
* 修改昵称
* 程序运行后用户名和新昵称
* */
public class UpdateDemo {
    
    
    public static void main(String[] args) throws IOException {
    
    
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入用户名");
        String name = scan.nextLine();
        System.out.println("新昵称");
        String nick = scan.nextLine();

        RandomAccessFile raf = new RandomAccessFile("data.txt","rw");
        boolean isUpdated = false;  //表示是否修改的变量,默认没修改。
        
        for (int i = 0;i<raf.length()/100;i++){
    
    
        	//移动指针到每次循环用户的起始位置
            raf.seek(i*100);
            //读取用户名
            byte[] data = new byte[32];
            raf.read(data);
            //去空格
            String n = new String(data,"utf-8").trim();
            //对比当前取出的用户名和用户要修改的用户名是否相同
            if (n.equals(name)) {
    
    
                //移动到昵称位置
                raf.seek(i*200+64);
                data = nick.getBytes("utf-8");
                data = Arrays.copyOf(data,32);
                raf.write(data);
                isUpdated = true;
                System.out.println("修改成功");
                break;
            }
        }
        //判断是否修改过
        if (!isUpdated){
    
    
            System.out.println("查无此人");
        }
        raf.close();
        }
    }

Guess you like

Origin blog.csdn.net/sinat_33940108/article/details/120777255