【问题标题】:Custom ID generator and saving to file自定义 ID 生成器并保存到文件
【发布时间】:2019-03-03 07:54:41
【问题描述】:

我在使用 BufferedReader 时遇到问题。我能够在 Python 上做到这一点,但 Java 让我很困惑。顺便说一句,这是 Android Studio 上的一个活动。最终计划是根据给定值计算长度并在使用卷时跟踪长度,但是,我不确定是否有比使用文本文件更有效的数据保存方法。如果有,请告诉。

我拥有的东西:

rollID.txt、rollType.txt、rollWidth.txt、rollWeight.txt、rollLenght.txt 显然还有 addRoll.java

逻辑:

  1. 当添加滚动活动打开时,它应该在 rollID.txt 中搜索最新的滚动#(0001、0002、......、0124......等等......)并再添加 1 个并显示它到顶部的TextView(当前标记为0001)。如果文件为空,则应以“0001”开头。

  2. 当使用添加按钮正式添加卷时,它应该将生成的卷 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 的样子:

【问题讨论】:

    标签: java android bufferedreader


    【解决方案1】:

    这将是一个基于 Java 控制台的程序,您将在其中获得下一个 rollnumber 并基于其他输入输入将被写入文件 因此,让我知道这是否是您想要的。 PS这有效 对于 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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多