簡體   English   中英

自定義ID生成器並保存到文件

[英]Custom ID generator and saving to file

我在使用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); } 

抱歉,這很令人困惑,但是很高興回答您對應用程序的任何疑問。

這是活動的樣子:

IMG:

這將是一個基於Java控制台的程序,在該程序中您將獲得下一個滾動號,並根據其他輸入輸入將相應地寫入文件,請告訴我這是否是您想要的。 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;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM