2015-10-24 2 views
-2

У меня есть текстовый файл, который есть содержание, как это:Как отредактировать запись в текстовом файле java?

1 John 200 
    4 Jack 144 
    7 Sarah 123 

формат программирования этой записи является

 int id, String name, int quantity 

Мой вопрос заключается в том, как изменить запись так:

Enter id of the record you want to edit? 
1 
New Name: 
Terry 
New Quantity: 
700 

поэтому после этого файл должен быть таким:

1 Terry 700 
    4 Jack 144 
    7 Sarah 123 

но я застрял в этом коде, потому что я все еще новичок java?

+1

напишите свой код .. – Satya

+0

Прочтите ваш файл. Создайте новый объект для каждой строки, затем разместите его в списке или что-то еще. Отредактируйте объект и запишите все обратно. –

+0

Простейший, если файл не слишком большой, - это полностью прочитать его в списке в памяти. Вы можете использовать сканер или аналогичный. Затем измените список и запишите его снова. –

ответ

0

Вот твой код. Дайте мне знать, если вам нужны объяснения: D

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.Scanner; 

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

     String newName=null; 
     String newQuantity=null; 
     boolean checked = true; 

    File f= new File("E:\\myFile.txt");   // path to your file 
    File tempFile = new File("E:\\myTempFile.txt"); // create a temp file in same path 
    BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); 
    Scanner sc = new Scanner(f); 
    System.out.println("Enter id of the record you want to edit?"); 
    Scanner sc2 = new Scanner(System.in); 
    int id = sc2.nextInt(); 
    while(sc.hasNextLine()) 
    { 
     String currentLine= sc.nextLine(); 
     String[] tokens = currentLine.split(" "); 
     if(Integer.valueOf(tokens[0])==id && checked) 
     { 
      sc2.nextLine();       
      System.out.println("New Name:"); 
      newName= sc2.nextLine(); 
      System.out.println("New Quantity:"); 
      newQuantity= sc2.nextLine(); 
      currentLine = tokens[0]+" "+newName+" "+newQuantity; 
      checked = false; 
     } 
     writer.write(currentLine + System.getProperty("line.separator")); 

    } 
    writer.close(); 
    sc.close(); 
    f.delete(); 
    boolean successful = tempFile.renameTo(f); 

    } 
} 
+0

Выполнение домашних заданий для домашних хозяйств для них - и трата вашего времени и их, и идет против принципов Stack Overflow **, помогающих ** пользователям самим найти ответы ** **. –

+0

Хорошо. Теперь я буду помнить об этом. Спасибо. –

Смежные вопросы