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("沒有該用戶");

}

}
}

RandomAccessFile()实现用户注册功能, 新增,查询,更新的更多相关文章

  1. Mybatis入门教程之新增、更新、删除功能_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 上一节说了Mybatis的框架搭建和简单查询,这次我们来说一说用Mybatis进行基本的增删改操作: 一. 插入一条数据 ...

  2. PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)

    原文: PHP5: mysqli 插入, 查询, 更新和删除  Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...

  3. Web---创建Servlet的3种方式、简单的用户注册功能

    说明: 创建Servlet的方式,在上篇博客中,已经用了方式1(实现Servlet接口),接下来本节讲的是另外2种方式. 上篇博客地址:http://blog.csdn.net/qq_26525215 ...

  4. 9、Django实战第9天:用户注册功能

    今天完成的是用户注册功能... 首先把注册页面的前端文件register.html复制到templates目录下 编辑users.views.py,创建一个注册的类 class RegisterVie ...

  5. .NET MVC 4 实现用户注册功能

    初学MVC,踩了不少坑,所以通过实现一个用户注册功能把近段时间学习到的知识梳理一遍,方便以后改进和查阅. 问题清单: l 为什么EF自动生成的表名后自动添加了s? l 如何为数据库初始化一些数据? l ...

  6. Django项目: 3.用户注册功能

    本章内容的补充知识点 导入库的良好顺序: 1.系统库 2.django库 3.自己定义的库(第三方库) redis缓存数据库的数据调用速度快,但是不利于长时间保存. mysql用于长时间存储,但是调用 ...

  7. TODO:MongoDB的查询更新删除总结

    TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...

  8. SQL Server2016 新功能实时查询统计信息

    SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...

  9. mysql查询更新时的锁表机制分析

    为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制. 一.概述 MySQL有三种锁的级别:页级.表级.行级.MyISAM和MEMORY存储引擎采用的是表级锁(t ...

随机推荐

  1. 为什么使用HTTP2?

    最近我们公司的官网由原来的http1.1已升级到http2,而我们前端开发对http2还是一片懵懂,更不知道为何换成了这个,故此补充了下http2的相关知识. http1.1相比于http1.0有哪些 ...

  2. JavaScript图形实例:七彩线团

    1.线团图案 设立坐标计算公式为: X=R1*COS(3α)+R2*COS(14α)) Y=R1*SIN(3α)+R2 *SIN(14α)) 再用循环依次取α值为0~2π(每次增量为0.01),计算出 ...

  3. WC集训DAY2笔记 组合计数 part.1

    目录 WC集训DAY2笔记 组合计数 part.1 基础知识 组合恒等式 错排数 卡特兰数 斯特林数 伯努利数 贝尔数 调和级数 后记 补完了几天前写的东西 WC集训DAY2笔记 组合计数 part. ...

  4. Reproduction CVE_2019_0708

    Xx_introduction Please protection,respect,love,"China's Internet Security Act"! For learni ...

  5. Support URL

    如您有任何疑问或者建议,请通过以下方式与我们取得联系,我们会尽快响应您的反馈: 邮箱:eighteyes_cn@163.com

  6. PromiseKit基本使用及源码解析

    Promise处理一系列异步操作的应用框架,能够保证顺序执行一系列异步操作,当出错时可以通过catch捕获错误进行处理.Promise框架也是很好的诠释了swift的面相协议编程以及函数式编程 两种类 ...

  7. 初识PMP PMBOK初解(指南第一章引论)

    引论 1.1指南概述和目的 普遍认可:大多数时候是适用于大多数项目,价值和有效性已获得一致认可. 良好实践:知识.技能.工具和技术能够达到预期的商业价值和成果,提高很多项目成功的可能性. 确定过程.输 ...

  8. Sqlite—锁机制

    https://blog.csdn.net/zhangsheng_1992/article/details/52598396 https://blog.csdn.net/xiyangyang8110/ ...

  9. python数据挖掘第三篇-垃圾短信文本分类

    数据挖掘第三篇-文本分类 文本分类总体上包括8个步骤.数据探索分析->数据抽取->文本预处理->分词->去除停用词->文本向量化表示->分类器->模型评估.重 ...

  10. AWVS12破解版使用

    本篇简单介绍AWVS12破解版的安装使用,如果您已经安装了AWVS 10.5的版本,不用卸载,可以共存. AWVS12破解版下载链接:https://github.com/starnightcyber ...