BufferedWriter.write()方法不会将整数写入文件

时间:2013-12-14 22:19:56

标签: java file

public void saveToTextFile(String outText) throws IOException
   {

       BufferedWriter out = new BufferedWriter(new FileWriter(outText));
       String[] keys=new String[words.size()];
       int[] values=new int[words.size()];
       int i=0;

       for(String word : words.keySet())
       {
          keys[i]=word;
          values[i]=words.get(word);
          i++;
          if(i==words.size()) //Έχουμε διασχίσει όλο το HashMap
          {
              break;
          }
       }

       bubbleSort(values,keys);

       for(i=0;i<words.size();i++)
       {
           out.write(keys[i]);
           out.write(",");
           out.write(values[i]);
           out.write("\n");
       }

       out.close();
   }

我有上面的功能,当我打开文件时,它创建它就像: 你好,你,是,很好,如何,谢谢,世界,以及前两个逗号之后的一些奇怪的符号。这就像out.write(values [i]);和out.write(“\ n”);不工作!我在bubbleSort *之后检查了数组,它们很好!问题似乎在于写文件......

这就是我得到的,这是正确的:

Word: hello Frequency: 2
Word: you Frequency: 2
Word: are Frequency: 1
Word: fine Frequency: 1
Word: how Frequency: 1
Word: thanks Frequency: 1
Word: too Frequency: 1
Word: world Frequency: 1

2 个答案:

答案 0 :(得分:4)

它正在执行as documented

  

写一个字符。

     

<强>参数:
  c - 指定要写入的字符的int

我怀疑你想要:

out.write(String.valueOf(values[i]));

这会覆盖Writer.write(int),即slightly more clearly documented

  

写一个字符。要写入的字符包含在给定整数值的16个低位中; 16位高位被忽略。

答案 1 :(得分:0)

你必须写字符串。尝试下面的任何一个

  • out.write( “123”);
  • out.write(new Integer(123).toString());
  • out.write(将String.valueOf(123));

在上面的例子中,假设123被写入文件。