《JAVA 进阶: 代码演示九》

1 . 演示文件的copy

package com.yx.demo1;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.junit.Test;

/*
 * 本类用于演示复制文件
 */
public class TestCopyFile {

	@Test
	public void testOne()throws Exception{
		File oldFile = new File("src\\test.txt");//原文件
		File newFile = new File("src\\test_bak.txt");//副本文件
		if(!newFile.exists()){
			newFile.createNewFile();
		}
//		FileInputStream fis = new FileInputStream(oldFile);//跟原文件建立输入流,从原文件中读取数据。
//		FileOutputStream fos = new FileOutputStream(newFile);//跟副本文件建立输出流,把从原文件中读取的数据写到副本文件中。
//		byte[] data = new byte[1024];
//		
//		int length;
//		//while((length = fis.read(data)) != -1){
//			//fos.write(data, 0, length)
//		//}
//		while(true){
//			length = fis.read(data);
//			if(length == -1){
//				break;
//			}
//			fos.write(data, 0, length);//从数组的第一位置开始,去读到的元素有多长,就会写出多长,为了最后一次读取的时候的精确性。
//		}
//		
//		fis.close();
//		fos.close();
		
		FileInputStream fis = new FileInputStream(oldFile);//跟原文件建立输入流,从原文件中读取数据。
		FileOutputStream fos = new FileOutputStream(newFile);//跟副本文件建立输出流,把从原文件中读取的数据写到副本文件中。
		BufferedInputStream bis = new BufferedInputStream(fis);
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		byte[] data = new byte[1024];
		
		int length;
		//while((length = fis.read(data)) != -1){
			//fos.write(data, 0, length)
		//}
		while(true){
			length = bis.read(data);
			if(length == -1){
				break;
			}
			bos.write(data, 0, length);//从数组的第一位置开始,去读到的元素有多长,就会写出多长,为了最后一次读取的时候的精确性。
		}
		
		bis.close();
		bos.close();		
		
	}
	
}

2.  演示用户的注册和登录

// User.java
package com.yx.demo1;

import java.io.Serializable;

// 继承Serializable接口,让其可序列化
public class User implements Serializable {

	private static final long serialVersionUID = 1L;

	private String loginId;
	private String loginPwd;
	public User(String loginId, String loginPwd) {
		super();
		this.loginId = loginId;
		this.loginPwd = loginPwd;
	}
	public User() {
		super();
	}
	public String getLoginId() {
		return loginId;
	}
	public void setLoginId(String loginId) {
		this.loginId = loginId;
	}
	public String getLoginPwd() {
		return loginPwd;
	}
	public void setLoginPwd(String loginPwd) {
		this.loginPwd = loginPwd;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	@Override
	public String toString() {
		return "User [loginId=" + loginId + ", loginPwd=" + loginPwd + "]";
	}
}
// TestUserLogin.java
package com.yx.demo1;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;

import org.junit.Test;


/*
 * 本类用于演示用户的注册和登录
 */
public class TestUserLogin {

	private Scanner input = new Scanner(System.in);
	//演示用户注册
	@Test
	public void userAdd()throws Exception{
		System.out.println("用户注册~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		System.out.println("请输入要注册的用户名");
		String name = input.next();
		System.out.println("请输入要注册的用户密码");
		String pwd = input.next();
		User user = new User(name,pwd);//创建新注册的用户
		File file = new File("src\\user.txt");
		if(!file.exists()){
			file.createNewFile();//创建保存用户的硬盘文件
		}
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));//构建对象输出流
		oos.writeObject(user);//输出对象
		oos.flush();//清空缓冲区
		oos.close();
		
	}
	
	//演示用户登录验证
	@Test
	public void checkUserLogin()throws Exception{
		System.out.println("请输入用户名");
		String name = input.next();
		System.out.println("请输入密码");
		String pwd = input.next();
		File file = new File("src\\user.txt");//首选获取保存着用户信息的硬盘文件
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));//构建对象输入流,读取文件中的用户对象
		User user = (User)ois.readObject();
		//使用从硬盘文件上获取的这个用户信息去比较键盘输入的用户信息,两个都相等就是验证成功,登录,有一个不相等登录失败
		if(user.getLoginId().equals(name)&&user.getLoginPwd().equals(pwd)){
			System.out.println("恭喜用户登录成功");
		}else{
			System.out.println("用户名或密码错误,请重新输入。");
		}
		ois.close();
	}
}

 

©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:上身试试 返回首页
实付 29.90元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值