A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 权跃杰 中级黑马   /  2012-8-10 20:45  /  1509 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
public class My_Test  
{
  public static void main(String[] args)
   {
    int b;
    try
     {
       FileOutputStream t=new FileOutputStream("out.txt");
       DataOutputStream f=new DataOutputStream(t);  //DataOutputStream的构造方法必须以OutputStream以及InputStream的实例引用为参数;
       for(b=0;b<5;b++)
           f.writeByte(b+'0');
           f.close();  
     }
    catch(Exception e)
     {
       System.out.println(e);
     }
   }
成员方法:public final void writeByte(int v) throws IOException;
但是 f.writeByte(b+'0')里面的b+'0'是什么意思?
如果理解成整数的话,但是为什么去掉‘0’,写入文件的就是乱码呢?

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

1 个回复

倒序浏览
  1. import java.io.*;

  2. public class My_Test {
  3.         public static void main(String[] args) {
  4.                 int b;
  5.                 try {
  6.                         FileOutputStream t = new FileOutputStream("out.txt");
  7.                         DataOutputStream f = new DataOutputStream(t); // DataOutputStream的构造方法必须以OutputStream以及InputStream的实例引用为参数;

  8.                         // 你想往里边存一个1,写成1的话,只是往里边存第1号ASCII值所对应的字符SOH
  9.                         // 写成'1',才是存字符1

  10.                         f.writeByte(1);
  11.                         f.writeByte('1');
  12.                         // 如果你想存a,那么久必须写成'a'
  13.                         f.writeByte('a');
  14.                         // 所以。很明显,不写''的话,只是存ASCII值锁对应的字符

  15.                         // 当你写成下面,代表a的ASCII值-48所对应的字符
  16.                         // a是97,97-48=49,49的ASCII值是1,所以存进去的值是1
  17.                         f.writeByte('a' - 48);

  18.                         f.writeByte(51 + '0');

  19.                         // 如果你想循环存进去0,1,2,3,4的话
  20.                         for (b = 0; b < 5; b++) {
  21.                                 // 你这个写法等于,存ASCII值0 + 字符0所对应的ASCII值48,加后ASCII值一共等于48,对应的字符为'0'
  22.                                 // 以此类推,存进去的一次是48所对应的a,49所对应的b....
  23.                                 f.writeByte(b + '0');

  24.                         }

  25.                         f.close();
  26.                 } catch (Exception e) {
  27.                         System.out.println(e);
  28.                 }
  29.         }
  30. }
复制代码
我在你的代码里边加入了较为容易理解的解释
你仔细看一下应该懂了

你查看API后,也可以发现DataOutputStream这个类的write方法的参数,是字符,而不是字符串
你里边存进去的是字符,不是字符串,是需要和ASCII码对应的
http://wenwen.soso.com/z/q217420814.htm?sp=4000
详细的表你可以看这里

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马