文档章节

Java实现文本文件动态存储和读写

娘炮中的女汉子
 娘炮中的女汉子
发布于 2017/05/15 21:16
字数 498
阅读 19
收藏 0

package text;

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

 

public class text {

 

 public static void main(String[] args) {
  int n = -1;
  File file = new File("text.txt");
  byte[] a = new byte[(int) file.length()];
  int as = 0;
  int ex = 0;
  try {
   FileInputStream in1 = new FileInputStream(file);
   while ((n = in1.read(a, 0, (int) file.length())) != -1) {
    String s = new String(a, 0, n);
    for (int shu2 = 0; shu2 < s.length(); shu2++) {
     if (s.charAt(shu2) == '\n')
      as++;
    }
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  String[][] stu = new String[4][as];
  String[] con = { "姓名", "性别", "年龄", "专业" };
  Scanner read = new Scanner(System.in);
  String[] k = new String[as];
  int shu = 0, d = 0;
  int a1 = 1;
  try {
   FileInputStream in = new FileInputStream(file);
   while ((n = in.read(a, 0, (int) file.length())) != -1) {
    String s = new String(a, 0, n);
    char[] aa = s.toCharArray();
    System.out.println(aa);
    for (int j = 0; j < as; j++) {
     for (int i = 0; i < stu.length; i++) {
      for (shu = d; shu < s.length(); shu++) {
       if ((s.charAt(shu) == ' ' || s.charAt(shu) == '\n') && a1 == 0) {
        d = shu;
        a1 = 1;
        break;
       }
       if (s.charAt(shu) != ' ' && s.charAt(shu) != '\n') {
        if (stu[i][j] == null) {
         stu[i][j] = s.charAt(shu) + "";
         a1 = 0;
        } else {
         stu[i][j] = stu[i][j] + s.charAt(shu) + "";
         a1 = 0;
        }
       }
       if ((s.charAt(shu) == ' ' || s.charAt(shu) == '\n') && a1 == 0) {
        d = shu;
        break;
       }
      }
     }
    }
   }
   System.out.println("该数据是否需要更改?");
   Scanner chan = new Scanner(System.in);
   String cha = chan.next();
   if (cha.equals("是")) {
    while (ex == 0) {
     System.out.println("请更改:");
     Scanner gai = new Scanner(System.in);
     String sh = gai.next();
     for (int j = 0; j < as; j++) {
      if (sh.equals(stu[0][j])) {
       for (int ss = 0; ss < k.length; ss++) {
        if (j == ss) {
         Scanner set = new Scanner(System.in);
         for (int shu2 = 0; shu2 < con.length; shu2++)
          System.out.println("你想更改" + stu[0][j] + "的" + con[shu2] + "请输入" + (shu2 + 1));
         int and = set.nextInt();
         for (int s = 0; s < stu.length; s++) {
          if (and == s + 1) {
           System.out.println("请更改" + stu[0][j] + "的" + con[s] + ":");
           String t=stu[s][j];
           stu[s][j] = read.next();
           if(t.equals(stu[s][j]))
            System.out.println("你根本没有更改");
           else
            System.out.println("更改成功");
          }
         }
         break;
        }
       }
       break;
      }else if(j==as-1){
       System.out.println("不存在"+sh+"的信息");
       break;
      }
     }
     System.out.println("你是否想继续更改?");
     Scanner ex1 = new Scanner(System.in);
     String ga = ex1.next();
     if (ga.equals("是"))
      ex = 0;
     if (ga.equals("否"))
      ex = 1;
    }
   }
   in.close();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  byte[] num[] = new byte[as][];
  for (int kk = 0; kk < num.length; kk++) {
   num[kk] = (stu[0][kk] + " " + stu[1][kk] + " " + stu[2][kk] + " " + stu[3][kk] + "\n").getBytes();
   try {
    FileOutputStream out = new FileOutputStream(file);
    for (int jj = 0; jj < num.length; jj++) {
     if (num[jj] != null)
      out.write(num[jj]);
    }
    out.close();
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

 

}

我想实现动态存储事件

大雄 男 8 下町小学

© 著作权归作者所有

娘炮中的女汉子
粉丝 1
博文 1
码字总数 498
作品 0
私信 提问
Android Serializable与Parcelable原理与区别

一、序列化、反序列化是什么? (1) 名词解释 对象的序列化 : 把Java对象转换为字节序列并存储至一个储存媒介的过程。 对象的反序列化:把字节序列恢复为Java对象的过程。 (2) 序列化详细解释 ...

KingMing
2015/04/16
0
0
三分钟读懂Java与JavaScript的区别,让小白摘帽

Java跟JavaScript虽然在名称上有些许相似,但其实是两种完全不同的语言。Java是一种程序设计语言,JavaScript是客户端的脚本语言,把这两样东西放在一起比较在科学上其实并不严谨。但它们唯一...

小欣妹妹
2017/10/21
0
0
wenweihu86/raft-java

raft-java Raft implementation library for Java. 参考自Raft论文和Raft作者的开源实现LogCabin。 支持的功能 leader选举 日志复制 snapshot 集群成员动态更变 Quick Start 在本地单机上部署...

wenweihu86
2018/07/01
0
0
分布式一致性算法raft的java实现 - raft-java

raft-java Raft implementation library for Java. 参考自Raft论文和Raft作者的开源实现LogCabin。 支持的功能 leader选举 日志复制 snapshot 集群成员动态更变 Quick Start 在本地单机上部署...

wenweihu86
2018/07/01
0
0
轻量级的关系型数据库中间件 - Sharding-JDBC

Sharding-JDBC是一个开源的适用于微服务的分布式数据访问基础类库,它始终以云原生的基础开发套件为目标。 Sharding-JDBC定位为轻量级java框架,使用客户端直连数据库,以jar包形式提供服务,...

亮_dangdang
2016/01/27
0
27

没有更多内容

加载失败,请刷新页面

加载更多

G1 垃圾收集器介绍-转

https://www.cnblogs.com/ASPNET2008/p/6496481.html

Java搬砖工程师
20分钟前
0
0
超高性能 key-value 数据库 Redis-基础数据结构

Redis的魅力 缓存大致可以分为两类:1.一种是应用内缓存,比如Map(简单的数据结构),以及EH Cache(Java第三方库);2.另一种 就是缓存组件,比如Memached,Redis;Redis(remote dictiona...

须臾之余
30分钟前
3
0
Mysql表分区的选择与实践小结

在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快。这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈。 一. 选择合适的解决方法 1....

小谜弟
37分钟前
3
0
为 git 添加多个公秘钥

如果想为主机配置多个git设置,设置多个git公、秘钥,只需在生成密钥时指定密钥保持的文件即可,保证保存密钥的文件不同即可。 示例: ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f...

niithub
37分钟前
1
0
walle-web 2.0安装流水

一、环境安装 VMware Workstation,centos7.6 64位,lnmp1.5 二、安装lnmp1.5 wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1......

我心中有猛狗
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部