自定义ID生成器并保存到文件

问题描述 投票:0回答:1

我在使用BufferedReader时遇到了麻烦。我能够在Python上实现这一点,但Java对我来说非常困惑。 BTW这是Android Studio上的一项活动。最终的计划是根据给定的值计算长度,并在使用滚动时跟踪长度,但是,我不确定除了使用文本文件之外是否存在更有效的方法来保存数据。如果是这样,请告诉我。

我有的东西:

rollID.txt,rollType.txt,rollWidth.txt,rollWeight.txt,rollLenght.txt和显然addRoll.java

逻辑:

  1. 当添加Roll活动打开时,它应该搜索rollID.txt以获取最新的卷#(0001,0002,....,0124 ...等等......)并再添加1个并将其显示到TextView的顶部(目前标记为0001)。如果文件为空,则应以“0001”开头。
  2. 当使用添加按钮正式添加Roll时,它应将生成的Roll ID保存在rollID.txt的下一行。它应该将309或321选项保存到rollType.txt,并从微调器中保存到rollWidth.txt,最后将权重保存到rollWeight.txt。它们应位于每个文本文件中的相应行上。
  3. 使用用户提供的数据,它将使用宽度,厚度,密度和重量计算卷的长度,并将该值保存到rollLength.txt public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_roll); TextView rollId = findViewById(R.id.rollid); }

如果这很令人困惑,我很抱歉,但我很乐意回答您对该应用程序的任何疑问。

这就是Activity的样子:

IMG:

java android bufferedreader
1个回答
0
投票

这将是一个基于java控制台的程序,您将获得下一个rollnumber并基于其他输入输入将相应地写入文件,让我知道这是否是您想要的。 P.S这适用于java 7及更高版本

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Scanner;

public class Test {

    public static int lineNumber = 0;
    public static void main(String[] args) {
        try {
            File rootFolder = new File("C:\\Test");//Location for all Text files

            //Get nextId (default 001)
            int rolNumber = getDataFromRollIDTxt();
            lineNumber = rolNumber-1;
            String rollNumber = String.format("%04d",rolNumber); //Adding leading zeros
            System.out.println("Next generated RollNumber %03d :: "+rollNumber);

            Scanner scanner = new Scanner(System.in);

            //For RollType
            System.out.print("Enter your RollType (309/321):: ");       
            String type = scanner.nextLine();
            System.out.println(type);

            //For RollWidth
            System.out.print("Enter your rollWidth:: ");
            String width = scanner.nextLine();
            System.out.println(width);

            //For RollWeight
            System.out.print("Enter your rollWeight:: ");
            String weight = scanner.nextLine();
            System.out.println(weight);

            //Saving Data to respective files at corresponding lineNumbers
            for (File file : rootFolder.listFiles()) {
                Path path = Paths.get(file.getAbsolutePath());
                List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
                if(file.getAbsolutePath().contains("ID")) {
                    lines.add(lineNumber, rollNumber);
                } else if(file.getAbsolutePath().contains("Weight")) {
                    lines.add(lineNumber, weight);
                } else if(file.getAbsolutePath().contains("Type")) {
                    lines.add(lineNumber, type);
                } else if(file.getAbsolutePath().contains("Width")) {
                    lines.add(lineNumber, width);
                } else if(file.getAbsolutePath().contains("Height")) {
                    long height = Integer.parseInt(width)/Integer.parseInt(weight)+Integer.parseInt(type); //Random calcultaions
                    lines.add(lineNumber, height+"");
                }
                Files.write(path, lines, StandardCharsets.UTF_8);
            }           

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static Integer getDataFromRollIDTxt() throws IOException {
        String text = ""; 
        try { 
            text = new String(Files.readAllBytes(Paths.get("C:\\Test\\rollId.txt")));
            if(!text.isEmpty()) {
                String[] arr = text.split("[\\r\\n]+"); //To get all rollnumbers in Array           
                Integer lastId = Integer.parseInt(arr[arr.length-1]);
                return ++lastId;
            }
            else {
                return 1;
            }           
        } 
        catch (IOException e) { 
            e.printStackTrace(); 
            throw e;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.