文档章节

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
Java图书管理系统练习程序(三)

Java图书管理系统练习程序(三) 本部分内容主要实现将用户信息写入文件中,并在程序执行时,将文件中的用户信息读入到内存中,实现用户信息的存储。 将Java对象序列化后,可以将对象保存在文...

AzureMonkey
10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
20
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
15
0
my.ini

1

architect刘源源
今天
14
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
15
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
25
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部