RandomAccessFile()实现用户注册功能, 新增,查询,更新

package seday03.raf;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.util.Scanner;

/**
* @author xingsir
* 用户注册功能
* 程序启动后,用户输入用户名,密码,年龄
* 然后将信息写入到文件text2.txt中。其中用户名,密码,为字符串,年龄为int值。
*
* 格式:
* 每条记录占用固定的100字节
* 其中用户名,密码 各占32字节,为字符串。年龄是int值,固定为4字节。
*
*/
public class RegDemo {

public static void main(String[] args) throws IOException {
//控制台輸入
Scanner scanner=new Scanner(System.in);
System.out.println("请输入用户名:");
String username= scanner.nextLine();
System.out.println("请输入密码:");
String password=scanner.nextLine();
System.out.println("请输入年龄:");
int age = Integer.parseInt(scanner.nextLine());

RandomAccessFile raf=new RandomAccessFile("test2.txt", "rw");
//将指针移动到文件末尾
raf.seek(raf.length());
//写用户名
byte[]data=username.getBytes("utf-8");
data=Arrays.copyOf(data,32);//各占32字节
raf.write(data);
//写密码
data =password.getBytes("utf-8");
data =Arrays.copyOf(data, 32);//各占32字节
raf.write(data);

//写年龄
raf.writeInt(age);
System.out.println("注册完毕!");
raf.close();

}

}

//=====================================================================================

package seday03.raf;

import java.io.IOException;
import java.io.RandomAccessFile;

/**
* @author xingsir
* 将test2.txt文件中的所有用户信息输出到控制台
*/
public class ShowAllUserDemo {

public static void main(String[] args) throws IOException {
RandomAccessFile raf =new RandomAccessFile("test2.txt","r");
//读取用户名
for(int i=0;i<raf.length()/100;i++) {
byte[] data=new byte[32];//定义数组,32位
//读取
raf.read(data);
//转换为字符串格式
String username= new String(data,"utf-8").trim();

raf.read(data);
String password =new String(data,"utf-8").trim();

//转换为int格式
int age = raf.readInt();
//输出
System.out.println(username+","+password+","+age);

}
raf.close();
}

}

//==============================================================================

package seday06;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.util.Scanner;

/**
* @author xingsir
* 程序启动后,要求用户输入用户名和新密碼。
* 然后将test2.txt文件中对应用户的密码更改。
* 如果输入的用户不存在,则提示沒有該用戶。
*/
public class UpdateDemo {

public static void main(String[] args) throws IOException{

Scanner scanner =new Scanner(System.in);
System.out.println("请输入用户名");
String username= scanner.nextLine();
System.out.println("请输入新的密码");
String password= scanner.nextLine();

RandomAccessFile raf =new RandomAccessFile("test2.txt", "rw");
boolean update =false;//初始值为false
for(int i=0;i<raf.length()/100;i++) {
raf.seek(i*100);
//读取用户名
byte[] data= new byte[32];
raf.read(data);
String name = new String(data,"UTF-8").trim();
//判断输出的名字是否有
if(name.equals(username)) {
//改密碼
raf.seek(i*100+32);
data =password.getBytes("utf-8");
data=Arrays.copyOf(data, 32);
raf.write(data);
System.out.println("修改完毕!");
update = true;
break;
}

}
if(!update) {
System.out.println("沒有該用戶");

}

}
}

猜你喜欢

转载自www.cnblogs.com/xingsir/p/12018091.html