代码之家  ›  专栏  ›  技术社区  ›  hummingBird

Java写文件错误行为

  •  1
  • hummingBird  · 技术社区  · 15 年前

    这是我的另一个Java问题。

    请看一下这个代码:

    
    public static void main(String[] args) {
      if( args.length != 5) {
       System.out.println("Error. Wrong number of params!");
       System.exit(0);
      }
      File file = new File(args[0]);
      try {
       BufferedImage image = ImageIO.read(file);
       FileWriter fstream = new FileWriter("output.txt");
             BufferedWriter out = new BufferedWriter(fstream);
       int avg = 0;
          int w = image.getWidth();
          int h = image.getHeight();
          Rectangle r = new Rectangle();
          double whiteHelp = Double.parseDouble(args[4]);
          avg = (int) (avg / 1);
          int startX = Integer.parseInt(args[2]);
          int startY = Integer.parseInt(args[3]);
          r.width = r.height = Integer.parseInt(args[1]);
          for(int i = startY; i <= h - r.height; i += r.height) {
           for(int j = startX; j &lt= w - r.width; j += r.width) {
            r.x = j;
            r.y = i;
            avg = getTileColor(r, image, whiteHelp);
            //System.out.print(avg);
            out.write(avg);
           }
           //System.out.println();
           out.write("\n");
          }
          out.close();
    
          image.flush();
          System.out.println("Finished parsing the image. Solving...");
      } catch (Exception e) {
       System.out.println("Error.");
       e.printStackTrace();  
      }
    
     } 
    
    

    在output.txt中,我只得到不可读的文本,就好像打开二进制文件一样。

    BufferedImage和BufferedWriter同时实例化时是否存在一些问题?我正在使用相同的过程来写入另一个类中的文件,其中一个文件打开供读取,另一个文件打开供写入,一切正常。

    P.S.如何在不破坏代码的情况下输入<字符????是否需要输入为<?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  5
  •   sleske    15 年前

    你调用

    out.write(avg)
    

    将int avg写入输出。

    这将调用该方法 BufferedWriter.write(int) ;这将用Unicode码位写出字符 avg . 这可能不是你想要的;-)。

    打印号码 动静脉畸形 十进制格式,使用

    out.write(String.valueOf(avg))