package service;
import bean.User;
/**
*
* 功能接口
*
*/
public interface UserFaoif {
void addUser(User u);
User getUser();
}
package service;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import bean.User;
import com.helper.StreamHelper;
//采用FileInputStream以及FileOutputStream完成User信息的读写
public class UserFaoImpl_1 implements UserFaoif {
public void addUser(User u) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream("user.txt", true);
// 如何去写?
String user = u.getId() + ":" + u.getName() + ":";
fos.write(user.getBytes());
fos.write("/r/n".getBytes());
} catch (Exception e) {
e.printStackTrace();
} finally {
StreamHelper.closeOutputStream(fos);
}
}
public User getUser() {
FileInputStream fis = null;
User user = null;
try {
fis = new FileInputStream("user.txt");
byte[] b = new byte[1024];
int length = -1;
String str = "";
while ((length = fis.read(b)) != -1) {
String us = new String(b, 0, length);
str += us;
}
String[] ss = str.split(":");
user = new User();
user.setId(Integer.parseInt(ss[0]));
user.setName(ss[1]);
} catch (Exception e) {
e.printStackTrace();
} finally {
StreamHelper.closeInputStream(fis);
}
return user;
}
}
package service;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import bean.User;
import demo.StreamHelper;
//采用BufferedInputStream和BufferedOutputStream完成对user信息的读写
public class UserFaoImpl_2 implements UserFaoif {
public void addUser(User u) {
BufferedOutputStream bos = null;
try{
//1.建立流连接
bos = new BufferedOutputStream(
new FileOutputStream(
new File("user.txt"),true));
//2.完成写操作
String user = u.getId() + ":" + u.getName() + ":";
bos.write(user.getBytes());
bos.write("/r/n".getBytes());
}catch(Exception e){
e.printStackTrace();
}finally{
StreamHelper.closeOutputStream(bos);
}
}
public User getUser() {
User user = null;
BufferedInputStream bis = null;
try{
//1.建立流连接
bis = new BufferedInputStream(
new FileInputStream(
new File("user.txt")));
byte[] b = new byte[1024];
String str = "";
int length = -1;
//2.完成读操作
while((length=bis.read(b))!=-1){
String us = new String(b, 0, length);
str += us;
}
//3.拆分组合字符串,重新构建user实例对象
String[] ss = str.split(":");
user = new User();
user.setId(Integer.parseInt(ss[0]));
user.setName(ss[1]);
}catch(Exception e){
e.printStackTrace();
}finally{
StreamHelper.closeInputStream(bis);
}
return user;
}
}
package service;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import bean.User;
import demo.StreamHelper;
//采用DataInputStream和DataOutputStream完成对user信息的读写
public class UserFaoImpl_3 implements UserFaoif {
public void addUser(User u) {
DataOutputStream dos = null;
try{
//1.建立流连接
dos = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File("user.txt"),true)));
//2.完成写操作
String user = u.getId() + ":" +u.getName() + ":";
dos.write(user.getBytes());
dos.write("/r/n".getBytes());
}catch(Exception e){
e.printStackTrace();
}finally{
StreamHelper.closeOutputStream(dos);
}
}
public User getUser() {
User user = null;
DataInputStream dis = null;
try{
//1.建立流连接
dis = new DataInputStream(
new BufferedInputStream(
new FileInputStream(
new File("user.txt"))));
//2.完成读操作
int length = -1;
byte[] b = new byte[1024];
String str = "";
while((length=dis.read(b))!=-1){
String us = new String(b, 0, length);
str += us;
}
String[] ss = str.split(":");
user = new User();
user.setId(Integer.parseInt(ss[0]));
user.setName(ss[1]);
}catch(Exception e){
e.printStackTrace();
}finally{
StreamHelper.closeInputStream(dis);
}
return user;
}
}
package service;
import java.util.Scanner;
import bean.User;
public class UserManager {
private UserFaoif fao = new UserFaoImpl_1();
//private UserFaoif fao = new UserFaoImpl_2();
//private UserFaoif fao = new UserFaoImpl_3();
public void start() {
Scanner sc = new Scanner(System.in);
System.out.println("1.增加用户");
System.out.println("2.加载用户");
System.out.println("3.离开系统");
int data = sc.nextInt();
switch (data) {
case 1: {
System.out.println("请输入id:name ");
String line = sc.next();
String[] u = line.split(":");
User user = new User(Integer.parseInt(u[0]), u[1]);
fao.addUser(user);// 把内存中的user信息写入到File中持久保持
break;
}
case 2: {
User user = fao.getUser();// 从文件中加载User信息
// System.out.println("id: "+user.getId());
System.out.println(user);
break;
}
default: {
break;
}
}
}
public static void main(String[] args) {
UserManager m = new UserManager();
m.start();
}
}