文件读写小程序

本文介绍了一种通过不同Java IO流实现用户信息的文件读写方法。具体包括使用FileInputStream/FileOutputStream、BufferedInputStream/BufferedOutputStream及DataInputStream/DataOutputStream进行用户信息的持久化存储与加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

 

//采用BufferedInputStreamBufferedOutputStream完成对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;

 

//采用DataInputStreamDataOutputStream完成对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();

    }

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值