【问题标题】:java.io.UnsupportedEncodingExceptionjava.io.UnsupportedEncodingException
【发布时间】:2013-11-15 11:35:37
【问题描述】:

我有读取用户输入然后写入文件的程序。 在该程序读取该文件并制作一些基本的算术函数之后。 然后结果显示在屏幕上供用户使用。之后我想清除该文件,因为它就像程序缓存一样,不需要永久存储。

一切都很好,我可以清除文件,但是我遇到了这样奇怪的异常:

java.io.UnsupportedEncodingException 程序停止。

我的代码: 文件是这样的

2013      Jūnijs              1500.0              80                  125                 293.7               151.25              1055.05             
2013      Jūlijs              1150.0              80                  125                 218.94              112.75              818.31              
2013      Septembris          1550.0              80                  125                 304.38              156.75              1088.87   

使用以下代码清除文件:

 public static void Clear_file() throws IOException{
                 System.out.println("Notīram failu");
                 clear = new Formatter(new FileWriter(user_name()+".txt", true));
                 FileOutputStream erasor = new FileOutputStream(user_name()+".txt");
                 erasor.write((new String().getBytes("")));
                 erasor.close();             
             }

我阅读了指南,里面是这样写的: 如果给定的字符集不在该列表中,那么肯定会抛出此错误。

我很困惑,因为文件中只有 String 和 double 类型的数据。

如何避免引发此异常?

谢谢:)

【问题讨论】:

  • 出于好奇,您对erasor.write((new String().getBytes(""))); 这行的实际期望是什么?

标签: java exception-handling io


【解决方案1】:

new String().getBytes("")

您没有为字符集提供名称,这就是引发异常的原因。

尝试设置一个,你会发现它运行正常。

System.out.println(Arrays.toString(new String("test").getBytes("UTF-8")));

输出:

[116, 101, 115, 116]

【讨论】:

  • 哦!我们应该检查以毫秒为单位的时间来比较:P
  • 在 SO 上可能吗?
  • @MartijnCourteaux 我不这么认为
  • @MartijnCourteaux 好吧,您可以尝试在data.stackexchange.com/stackoverflow/queries 构建查询,但日期时间存储为YYYY-MM-DD HH:MM:SS,所以我认为您不会得到任何进一步的信息。你也得到了我的 +1 =)
  • 很好,我找到了!日期时间以 long 形式存储,表示自纪元以来的毫秒数。但是服务器上有一些延迟。缓存尚未准备好回答查询,该查询将告诉我们谁首先回答了这个问题。对于较旧的问题,它有效。 data.stackexchange.com/stackoverflow/query/146189/…
【解决方案2】:
erasor.write((new String().getBytes("")));

在这里,您要求空的 String 对象获取一个以编码方式编码的字节数组:""。 (无名)。当然,没有名为""的字符编码。

要清除文件,请使用以下内容:

new FileOuputStream(file).close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2012-03-31
    • 2016-07-13
    相关资源
    最近更新 更多