当前位置: 首页 > 知识库问答 >
问题:

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

詹甫
2023-03-14
     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

共有1个答案

何楷
2023-03-14

用你的文件测试你的代码对我很有效。但是错误是您收到的信号表明您没有用scanner.nextint()读取整数。

我将用下面的代码片段测试您的完整文件。只是为了检查解析在哪里失败。解决这个问题。

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()

 类似资料:
  • 我想让程序把我的文本文件的每一行保存到String s中,并用PrintWriter将String s打印到另一个文本文件中。 我已经运行了代码并输出了。println(s),只输出了第一次的文本文件。我查找了如何将字符串打印到文本文件中,我发现我应该使用PrintWriter。我希望程序基本上能够使用PrintWriter将文本文档的内容“重新打印”到“updated.txt”文件中。然而,它似

  • 问题内容: 文件创建成功,但是我无法让PrintWriter将任何内容打印到文本文件。码: 问题答案: 您必须刷新和/或关闭文件才能将数据写入磁盘。 添加您的代码:

  • 问题内容: 我有以下代码将字符串(从ResultSet)打印到文本文件: 我在写语句中放置了一个“ \ n”,希望它将每行打印在不同的行上,但是失败了。txt文件当前像这样打印出来,其中row#是ResultSet中的另一行: row1row2row3row4row5 我希望它像这样打印出来: 第1行 第2行 第3行 第4行 第5行 … 问题答案: 您应该使用在每行之后打印换行符:

  • 我有以下代码将字符串(从结果集)打印到文本文件: 我在write语句中加了一个“\n”,希望它能在不同的行上打印每一行,但失败了。txt文件当前按此方式打印,结果集中的第#行是另一行: Rrow1row2row3row4row5 我想把它打印出来,比如: 第1行 行2 行3 行4 行5 ...

  • 问题内容: 我正在尝试编辑matlabfile并替换某些特定行中的一些编码部分init。但是,使用下面的格式进行更改将完全不会更改行上下文。(它将打印相同的旧行)。知道我在做什么错吗?’replaceAll’不适合用其他词替换某些词吗? 提前致谢。 问题答案: 该方法在将正则表达式作为参数,并在正则表达式的一些字符有特殊的含义,比如在你的表达括号。 只需改用采用文字字符串的方法即可: 不要被方法的