我读文件然后写文件,文本之间的空格消失

我从临时文件中读取并将其写入永久文件,但某处字符串丢失了所有空格

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String b, filename;
        b = null;
        filename = (textfieldb.getText());
        try {
            // TODO add your handling code here:
            dispose();
            Scanner scan;
            scan = new Scanner(new File("TempSave.txt"));
            StringBuilder sb = new StringBuilder();
            while (scan.hasNext()) {
                sb.append(scan.next());
            }
            b = sb.toString();
                    String c; 
        c = b;
        FileWriter fw = null;
        try {
            fw = new FileWriter(filename + ".txt");
        } catch (IOException ex) {
            Logger.getLogger(hiudsjh.class.getName()).log(Level.SEVERE, null, ex);
        }
        PrintWriter pw = new PrintWriter(fw);
        pw.print(c);
        pw.close();
        System.out.println(c);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
          dispose();
        hiudsjh x = new hiudsjh();
        x.setVisible(true);

        System.out.println(b);
    }

没有错误消息只是输出应该是剩余空格的文件


斯蒂芬大帝
浏览 850回答 4
4回答

凤凰求蛊

而不是hasNext()和next()你没有得到空格,使用hasNextLine()和nextLine()逐行读取filr并在每行后追加行分隔符:while (scan.hasNextLine()) {     sb.append(scan.nextLine());     sb.append(System.lineSeparator());}

人到中年有点甜

这个:while (scan.hasNext()) {     sb.append(scan.next());}是删除空格... next()将从扫描仪返回下一个完整的标记,这不包括空格。您需要附加空格或更改您阅读文件的方式......

回首忆惘然

从扫描仪文档:扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。并从下一个方法文件查找并返回此扫描程序中的下一个完整令牌。在完成令牌之前和之后是与分隔符模式匹配的输入。换句话说,Scanner将输入String拆分为没有空格的序列。要将文件读取为String,您可以使用它new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);来读取整个文件。

心有法竹

您可以逐行读取文件,并在每行后面附加一个行分隔符,而不是扫描每个标记:while (scan.hasNextLine()) {     sb.append(scan.nextLine());     sb.append(System.lineSeparator());}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java