簡體   English   中英

PrintWriter 僅打印文本文件中的第一行

[英]PrintWriter is printing only the first line in text file

PrintWriter 的關閉放置在 finally 塊中,因此從邏輯上講,它應該將所有現有行寫入文本文件中,如下面的代碼所示,

     public boolean updatecentre(String row, int cuid) throws IOException
{
    boolean updated = false;
    int dbcuid;
    String dbcname, dbcentre, dba1, dba2, dba3, vac1, dose1, vac2, dose2, vac3, dose3, dbstr;
    
    File F1 = new File("Centre.txt");
    File Ftc1 = new File("Temp.txt");
    FileWriter fw1 = new FileWriter(Ftc1, true);
    BufferedWriter bw1 = new BufferedWriter(fw1);
    PrintWriter pw1 = new PrintWriter(bw1);
    Scanner Sc1 = new Scanner(F1);
    Sc1.useDelimiter("[/\n]");
    try
    {
        while(Sc1.hasNext())
        {
            dbcuid = Sc1.nextInt();
            dbcname = Sc1.next();
            dba1 = Sc1.next();
            dba2 = Sc1.next();
            dba3 = Sc1.next();
            vac1 = Sc1.next();
            dose1 = Sc1.next();
            vac2 = Sc1.next();
            dose2 = Sc1.next();
            vac3 = Sc1.next();
            dose3 = Sc1.next();
            dbstr = dbcuid+"/"+dbcname+"/"+dba1+"/"+dba2+"/"+dba3+"/"+vac1+"/"+dose1+"/"+vac2+"/"+dose2+"/"+vac3+"/"+dose3;
            if(dbcuid == cuid)
            {
                pw1.print(row +"\n");
                updated = true;
            }
            else
            {
                pw1.print(dbstr+"\n");
            }
        }
    }
    catch(Exception e)
    {
        
    }
    finally
    {
        Sc1.close();
        pw1.flush();
        pw1.close();
        bw1.close();
        fw1.close();
        F1.delete();
        File dump = new File("Centre.txt");
        Ftc1.renameTo(dump);  
    }
    return updated;
}

但是現在它只打印第一行,之后的行在執行時沒有打印,那么這里有什么問題呢? 昨天還好好的,突然就開始出現這個問題了。

文本文件中的內容:

1/Axiata Arena Bukit Jalil/L2-E-10, Enterprise 4,/Technology Park Malaysia, Bukit Jalil,/57000, Kuala Lumpur/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
2/Titiwangsa Stadium/Jalan Tembeling,/Titiwangsa,/53200, Kuala Lumpur/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
3/Kompleks Sukan Pandamaran Klang/Padamaran,/Port Klang,/42000, Selangor/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
4/KPL Ampang Puteri Hospital/1, Jalan Mamanda 9,/Taman Dato Ahmad Razali,/68000 Ampang, Selangor/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25
5/Mines Convention Centre/MIECC, Jalan Dulang,/Mines Wellness City, Seri Kembangan,/43300, Selangor/Pfizer-BioNTech/100/CoronaVac/50/AstraZeneca/25

用你的文件測試你的代碼對我有用。 但是您收到的錯誤信號表明您沒有使用 scanner.nextInt scanner.nextInt()讀取 integer 。

我會用下面的這段代碼來測試你的完整文件。 只是為了檢查解析失敗的地方。 並解決這個問題。

String dbcuidStr = sc.next();

try
{
    System.out.println("This is the ID: " + dbcuidStr);
    dbcuid = Integer.parseInt(dbcuidStr);
}
catch (Exception e)
{
    System.out.println(dbcuidStr + " could not be parsed to an integer");
    
}

而且您始終可以使用Scanner函數,例如.hasNextInt()

暫無
暫無

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

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