簡體   English   中英

如何更新或刪除.txt文件中的特定行?

[英]How to Update or delete a specific line from a .txt file?

我已經有了將數據插入文本文件並進行搜索的方法。 現在,我需要“更新”和“刪除”所選記錄的方法。

這是我到目前為止所做的

private void InsertbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                             

    fileWriter = null;
    try {
        String phone = Phone.getText();
        String fname = Fname.getText();
        String lname = Lname.getText();
        String nic = NIC.getText();
        String city = City.getSelectedItem().toString();

        fileWriter = new FileWriter(file, true);
        fileWriter.append(phone + "|" + fname + "|" + lname + "|" + nic + "|" + city+ "|");
        fileWriter.append("\r\n");
        fileWriter.flush();
        JOptionPane.showMessageDialog(InsertGUI.this, "<html> " + phone + " <br> Successfully saved! </html>");

        Phone.setText(null);
        NIC.setText(null);
        Fname.setText(null);
        Lname.setText(null);
        City.setSelectedIndex(0);

    } catch (IOException ex) {
        Logger.getLogger(InsertGUI.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        try {
            fileWriter.close();
        } catch (IOException ex) {
            Logger.getLogger(InsertGUI.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}


private void searchbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                             

    try {
        fileReader = new FileReader(file);
        BufferedReader br = new BufferedReader(fileReader);

        String selectedphone = SearchF.getText();

        String content = "";
        String temp = "";
        try {
            while ((temp = br.readLine()) != null) {
                content += temp;
            }
        } catch (IOException ex) {
            Logger.getLogger(UpdateGUI.class.getName()).log(Level.SEVERE, null, ex);
        }
        HashMap<String, String> map = new HashMap();
        StringTokenizer stringTokenizer = new StringTokenizer(content, "|");
        boolean found = false;
        while (stringTokenizer.hasMoreTokens()) {
            String phone = stringTokenizer.nextElement().toString();
            String fname = stringTokenizer.nextElement().toString();
            String lname = stringTokenizer.nextElement().toString();
            String nic = stringTokenizer.nextElement().toString();
            String city = stringTokenizer.nextElement().toString();

            if (phone.equalsIgnoreCase(selectedphone)) {

                Phone.setText(phone);
                NIC.setText(nic);
                Fname.setText(fname);
                Lname.setText(lname);
                switch (city) {
                    case "Ambalangoda":
                        City.setSelectedIndex(0);
                        break;
                    case "Ampara":
                        City.setSelectedIndex(1);
                        break;
                    case "Anuradhapura":
                        City.setSelectedIndex(2);
                        break;
                    case "Avissawella":
                        City.setSelectedIndex(3);
                        break;
                    case "Badulla":
                        City.setSelectedIndex(4);
                        break;
                    case "Balangoda":
                        City.setSelectedIndex(5);
                        break;
                    }
                found = true;

            }

        }
        if (!found) {
            JOptionPane.showMessageDialog(UpdateGUI.this, "Phone number not found!");
            Phone.setText(null);
            NIC.setText(null);
            Fname.setText(null);
            Lname.setText(null);
            City.setSelectedIndex(0);
        }
    } catch (FileNotFoundException ex) {
        Logger.getLogger(UpdateGUI.class.getName()).log(Level.SEVERE, null, ex);
    }
}

有人可以幫我嗎? 我想要以下方法:

private void UpdatebuttonActionPerformed(java.awt.event.ActionEvent evt) {

}
private void DeleteButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             

}

提前致謝! :)

我給你一個我發現的例子。 在此示例中,我將替換行內的字符串。 您可以看到在我的情況下,我正在從txt閱讀。

/ ******

public static void replaceSelected(String replaceWith, String type) {
    try {
        // input the file content to the String "input"
        BufferedReader file = new BufferedReader(new FileReader("notes.txt"));
        String line;String input = "";

        while ((line = file.readLine()) != null) input += line + '\n';

        file.close();

        System.out.println(input); // check that it's inputted right

        // this if structure determines whether or not to replace "0" or "1"
        if (Integer.parseInt(type) == 0) {
            input = input.replace(replaceWith + "1", replaceWith + "0"); 
        }
        else if (Integer.parseInt(type) == 1) {
            input = input.replace(replaceWith + "0", replaceWith + "1");
        } 

        // check if the new input is right
        System.out.println("----------------------------------"  + '\n' + input);

        // write the new String with the replaced line OVER the same file
        FileOutputStream fileOut = new FileOutputStream("notes.txt");
        fileOut.write(input.getBytes());
        fileOut.close();

    } catch (Exception e) {
        System.out.println("Problem reading file.");
    }
}

public static void main(String[] args) {
    replaceSelected("Do the dishes","1");    
}

* /

結果:

原版的:

原始文本文件內容:

洗碗0喂狗0打掃房間1輸出:

洗碗0喂狗0

打掃我的房間1

洗碗1喂狗0打掃房間1


最近的輸出:

洗碗1(已變)喂狗0打掃房間1


也許這個例子對你有幫助。

問候!

讀取數據到字符串。 使用string.replace(forDelte,“”)。 然后只需重寫為txt文件即可。

暫無
暫無

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

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