CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

一个简单的问题。

楼主dudeng2005(dudeng)2005-08-01 19:42:33 在 Java / J2SE / 基础类 提问

import   java.io.*;  
  public   class   FileIODemo2  
  {  
  public   static   void   main(String   args   [])   throws   Exception  
  {  
   
        FileOutputStream   out   =   new   FileOutputStream("C:\\javawork\\test2.txt");  
        out.write(53);  
                          out.close();  
  }  
  }  
   
  为什么写入test2.txt的内容是5啊??不明白,请大家解释一下啊!小弟初学,最好详细点好! 问题点数:20、回复次数:11Top

1 楼xiaohuasz()回复于 2005-08-01 20:14:29 得分 3

void   write(int   b)    
                      Writes   the   specified   byte   to   this   file   output   stream.    
  53对应ASCII   Chart中的字符5,你写入的是字节,而不是整数!Top

2 楼congliu(取次花丛都不顾,半缘修道半缘君。)回复于 2005-08-01 20:22:00 得分 1

FileOutputStream要求输入的参数是byte类型的对象或者数组。而53其实有两个byte,所以楼主输出的时候只有一个5。  
   
  请楼主参考以下例程,它把一个String转成byte【】之后再输出  
   
  import   java.io.*;  
  public   class   FileIODemo2  
  {  
  public   static   void   main(String   args   [])    
  {  
   
  String   test="3424324";  
   
  try{  
        FileOutputStream   out   =   new   FileOutputStream(new   File("g:\\test2.txt"));  
        out.write(test.getBytes()     );  
      out.close();}  
  catch(Exception   exc){  
  exc.printStackTrace();    
                     
  }  
  }  
  }Top

3 楼homesos(熊猫贩子)回复于 2005-08-01 20:25:41 得分 1

楼上说的对  
   
  public   void   write(int   b)  
                        throws   IOException  
  Writes   the   specified   byte   to   this   file   output   stream.   Implements   the   write   method   of   OutputStream.    
   
  Parameters:  
  b   -   the   byte   to   be   written.    
   
  FileOutputStream写入的不是int的值,而是相应数值的字符Top

4 楼wangdong_hk(王栋)回复于 2005-08-01 20:26:31 得分 1

FileOutputStream的参数是byte类型的对象或数组。而53是两个byte,但又没有放到byte数组中,所以导致3丢失,可以"53".getBytes()转化为字节数组才写到文件中Top

5 楼homesos(熊猫贩子)回复于 2005-08-01 20:27:18 得分 1

错了  
  是   xiaohuasz()   说的对  
  如果想要输出53,可以这样  
  out.write(53   +   "");Top

6 楼xq_zz()回复于 2005-08-01 20:27:31 得分 1

53对应ASCII是5,所以写入的是5.Top

7 楼homesos(熊猫贩子)回复于 2005-08-01 20:28:37 得分 1

congliu(取次花丛都不顾,半缘修道半缘君。)    
    wangdong_hk(王栋)  
  说的是错的,  
   
  不信,可以调用out.write(5);   试一下,看看结果先。  
  Top

8 楼dudeng2005(dudeng)回复于 2005-08-01 21:33:22 得分 0

write(int   b)    
                      Writes   the   specified   byte   to   this   file   output   stream.  
  这个方法到底怎么啦?write方法后面明明写的int   b啊     怎么就write(53)   后结果输出就成了ASCII码对应的字符了???  
   
  xiaohuaaz   你能不能再说清楚点啊。“你写入的是字节,而不是整数!”我不明白你这句话。Top

9 楼xiaohuasz()回复于 2005-08-02 00:06:33 得分 10

write  
  public   abstract   void   write(int   b)  
                                          throws   IOException  
  Writes   the   specified   byte   to   this   output   stream.   The   general   contract   for   write   is   that   one   byte   is   written   to   the   output   stream.   The   byte   to   be   written   is   the   eight   low-order   bits   of   the   argument   b.   The   24   high-order   bits   of   b   are   ignored.    
  Subclasses   of   OutputStream   must   provide   an   implementation   for   this   method.    
   
   
  Parameters:  
  b   -   the   byte.    
  Throws:    
  IOException   -   if   an   I/O   error   occurs.   In   particular,   an   IOException   may   be   thrown   if   the   output   stream   has   been   closed.  
  上面是jdk中OutputStream的write方法的描述,它是个抽象方法,具体在FileOutputStream实现  
  OutputStream是二进制流,int是32位,53换算为二进制为00000000   00000000   00000000   00110101,根据The   24   high-order   bits   of   b   are   ignored,则实际流中传输的为00110101,即一个字节,而其输入到文件中显示为字符的话就是5Top

10 楼bigdogyang(努力学JAVA)回复于 2005-08-02 00:11:16 得分 1

public   abstract   void   write(int   b)  
  53对应ASCII是5,所以写入的是5.  
  同意这种说法。Top

11 楼dudeng2005(dudeng)回复于 2005-08-02 12:24:53 得分 0

多谢xiaohuasz的详细解答!多给点分你     呵呵Top

相关问题

  • 简单!
  • 简单
  • 简单~~~
  • 简单
  • 简单!
  • 简单
  • 简单
  • 简单……
  • 简单问题不简单!
  • 简单的简单啊!

关键词

  • 字符
  • 写入
  • fileoutputstream
  • 数组
  • outputstream
  • 输出
  • output stream
  • write
  • byte
  • written

得分解答快速导航

  • 帖主:dudeng2005
  • xiaohuasz
  • congliu
  • homesos
  • wangdong_hk
  • homesos
  • xq_zz
  • homesos
  • xiaohuasz
  • bigdogyang

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo