2014-01-19 91 views
-1

我有一個包含以下內容的文本文件:如何更改從使用java的文本文件讀取的行內的值?

12345678,1234,100,DefaultUser 

第三值「100」是錢的平衡,我需要幫助做的是創造一個退出方法,根據用戶輸入改變該值。

有人可以展示一個這樣的例子,所以我可以看到它是如何做到的? 這就是我所擁有的,我很可能離開。

//Withdraw 
public static void withdraw(){ 
    //Create a scanner object 
    Scanner sc = new Scanner(System.in); 

    // Get user input 
    System.out.println("How much money would you like to withdraw?\n"); 
    System.out.print("Enter amount:\t"); 
    float amount = sc.nextInt(); 

    try { 
     BufferedReader br = new BufferedReader(new FileReader("Data/users.txt")); 
     BufferedWriter bw = new BufferedWriter(new FileWriter("Data/users.txt")); 
     String[] userInfo = br.readLine().split(","); 

     float currBalance = Integer.parseInt(userInfo[2]); 
     float newBalance = currBalance - amount; 

     userInfo[2] = ""+newBalance; 
     bw.write(userInfo+""); 

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

http://stackoverflow.com/questions/3935791/find-and-replace-words-lines-in-a-file – GGrec

+0

一個爲你的情況下快速的解決辦法是覆蓋現有文件,重寫所有值。 –

回答

0

以下示例是您嘗試實現的非常粗略的版本。請注意,在完全重寫文件以包含新值之前,代碼會將文件的所有行放入Collection中以進行臨時存儲。

這允許讀取和寫入文件分開進行。

public class Withdrawl { 

    public static void main(String[] args) throws IOException { 

     Scanner sc = new Scanner(System.in); 

     // Get user input 
     System.out.println("How much money would you like to withdraw?\n"); 
     System.out.print("Enter amount:\t"); 
     float amount = sc.nextInt(); 

     File input = new File("Data/users.txt"); 

     BufferedReader br = new BufferedReader(new FileReader(input)); 
     List<String> lines = new LinkedList<String>(); 

     //Write all lines to a Collection 
     String line; 
     while((line = br.readLine()) != null){ 
      lines.add(line); 
     } 
     br.close(); 

     //This could would need to find the actual user instead of using hardcoded 2 
     String[] tokens = lines.get(0).split(","); 
     float currentBalance = Float.parseFloat(tokens[2]); 
     float newBalance = currentBalance + amount; 
     tokens[2] = String.valueOf(newBalance); 

     String finalString = ""; 
     String comma = ""; 
     for(String s: tokens){ 
      finalString += comma + s; 
      comma = ","; 
     } 

     lines.set(0, finalString); 

     FileWriter fw = new FileWriter(input); 
     for(String out:lines){ 
      fw.write(out); 
     } 
     fw.flush(); 
     fw.close(); 

    } 
} 
相關問題