簡體   English   中英

Java如何更新文本文件的字符串

[英]Java how to update String of Text file

我想更新使用Java的Scanner類創建的Text文件的內容。 文本文件的每一行包含4個字符串。 每當用戶更新值時,我想更新每行2個字符串。 我嘗試了不同的代碼,但沒有任何效果。 請幫助我更新自己的價值觀。 應該怎么解決?

import java.util.*;
import java.io.*;
import javax.swing.*;
public class File2
{

    public static void main(String args[])
    {

        Scanner obj=new Scanner(System.in);
        System.out.println("\f");
        System.out.println("Enter Material");
        String material=obj.next();
        String color="Tendra Black";
        System.out.println("Enter quantity");
        String quantity=obj.next();
        System.out.println("Enter roll");
        String roll=obj.next();
        Scanner fileIn = null;

        try
        {
            fileIn = new Scanner (new FileInputStream("Stock.txt"));
        }
        catch(FileNotFoundException f)
        {
            JOptionPane.showMessageDialog(null,"File not found. Please specify coreect location.");
        }

        if(fileIn.hasNext())
        {
            while(fileIn.hasNext())
            {
                File log= new File("Stock.txt");

                String details = fileIn.nextLine();     
                StringTokenizer tokenizer = new StringTokenizer(details,"-"); 
                String materialAvailable=null;
                String colorAvailable=null;
                String quantityAvailable=null;
                String rollAvailable=null;

                while(tokenizer.hasMoreTokens())
                {
                    materialAvailable=tokenizer.nextToken();
                    colorAvailable=tokenizer.nextToken();
                    quantityAvailable=tokenizer.nextToken();
                    rollAvailable=tokenizer.nextToken();

                    if((colorAvailable.equalsIgnoreCase(color)))
                    {

                        int val1Q=Integer.parseInt(quantityAvailable);
                        int val2Q=Integer.parseInt(quantity);
                        int val1R=Integer.parseInt(rollAvailable);
                        int val2R=Integer.parseInt(roll);
                        int quanF=val1Q+val2Q;
                        int rollF=val1R+val2R;
                        //quantityAvailable=Integer.toString(quanF);
                        //rollAvailable=Integer.toString(rollF);//file readTill
                        details=details.replaceAll(quantityAvailable,Integer.toString(quanF));
                        details=details.replaceAll(rollAvailable,Integer.toString(rollF));

                    }
                    try{
                        FileWriter fw = new FileWriter(log);
                        fw.write(details);
                        fw.close();
                    }
                    catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }

    }
}

您只需要打開要覆蓋的文件而不是附加文件,使用FileOutputStream並將附加值設置為false,就像這樣

try{
    FileOutputStream fw = new FileOutputStream(log, false);
    fw.write(details);
    fw.close();
}

暫無
暫無

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

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