为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

斯蒂芬大帝 2019-04-18 18:19:01
我从临时文件中读取并将其写入永久文件,但某处字符串丢失了所有空格    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);     }没有错误消息只是输出应该是剩余空格的文件
查看完整描述

4 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

而不是hasNext()next()你没有得到空格,使用hasNextLine()nextLine()逐行读取filr并在每行后追加行分隔符:

while (scan.hasNextLine()) {
    sb.append(scan.nextLine());
    sb.append(System.lineSeparator());}


查看完整回答
反对 回复 2019-05-15
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

这个:

while (scan.hasNext()) {
    sb.append(scan.next());}

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


查看完整回答
反对 回复 2019-05-15
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

从扫描仪文档

扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。

并从下一个方法文件

查找并返回此扫描程序中的下一个完整令牌。在完成令牌之前和之后是与分隔符模式匹配的输入。

换句话说,Scanner将输入String拆分为没有空格的序列。要将文件读取为String,您可以使用它new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);来读取整个文件。


查看完整回答
反对 回复 2019-05-15
?
心有法竹

TA贡献1866条经验 获得超5个赞

您可以逐行读取文件,并在每行后面附加一个行分隔符,而不是扫描每个标记:

while (scan.hasNextLine()) {
    sb.append(scan.nextLine());
    sb.append(System.lineSeparator());}


查看完整回答
反对 回复 2019-05-15
  • 4 回答
  • 0 关注
  • 849 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号