文档章节

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

娘炮中的女汉子
 娘炮中的女汉子
发布于 2017/05/15 21:16
字数 498
阅读 18
收藏 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
wenweihu86/raft-java

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

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

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

wenweihu86
07/01
0
0
三分钟读懂Java与JavaScript的区别,让小白摘帽

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

小欣妹妹
2017/10/21
0
0
【死磕Sharding-jdbc】—orchestration简介&使用

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/c33191385767 orchestration简介 sharding-jdbc2.x核心功能之一就是orchestration,即编排治理,什么意思呢?官方文档介绍--2.0...

飞哥-Javaer
08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js 操作cookie

var cookie = {// 设置cookie方法 set:function(key,val,time){ // 获取当前时间 var date = new Date(); // 将date设置为n天以后的时间 var exp...

小丶二
5分钟前
0
0
限制root远程登录 su和sudo命令

9月21日任务 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 对于Linux而言,权限的重要性毋庸置疑!对于普通用户而言无法执行那些只有root用户才能有效的命令,导致工作无法有效进行; 系统...

robertt15
7分钟前
0
0
MQTT协议的初浅认识之通讯级别和持久会话

背景 这是我最近了解MQTT协议的最后一部分内容了,MQTT协议里面的QOS和Keep Alive是两个比较重要的内容。QOS的设置,直接影响了订阅客户端与中间件之间的消息交互行为。而Keep Alive直接影响...

亚林瓜子
9分钟前
0
0
calc

width: calc(100% - 30px); 特别注意:减号左右空格,均不能去掉。 width: calc(100% - 30px);

柴高八斗之父
17分钟前
0
0
Spring Cloud Gateway全局过滤器GlobalFilter:返回消息和重定向

Spring Cloud Gateway的全局过滤器GlobalFilter,顾名思义,声明后会对所有的请求生效,可以用来做权限控制,这里简单记录一下拦截到非法请求后如何返回自定义信息和将请求重定向到指定URL。...

夜雨寄北09
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部