黑马程序员技术交流社区
标题:
高手给指点下
[打印本页]
作者:
权跃杰
时间:
2012-8-10 20:45
标题:
高手给指点下
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’,写入文件的就是乱码呢?
作者:
黎健东
时间:
2012-8-10 22:10
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的实例引用为参数;
// 你想往里边存一个1,写成1的话,只是往里边存第1号ASCII值所对应的字符SOH
// 写成'1',才是存字符1
f.writeByte(1);
f.writeByte('1');
// 如果你想存a,那么久必须写成'a'
f.writeByte('a');
// 所以。很明显,不写''的话,只是存ASCII值锁对应的字符
// 当你写成下面,代表a的ASCII值-48所对应的字符
// a是97,97-48=49,49的ASCII值是1,所以存进去的值是1
f.writeByte('a' - 48);
f.writeByte(51 + '0');
// 如果你想循环存进去0,1,2,3,4的话
for (b = 0; b < 5; b++) {
// 你这个写法等于,存ASCII值0 + 字符0所对应的ASCII值48,加后ASCII值一共等于48,对应的字符为'0'
// 以此类推,存进去的一次是48所对应的a,49所对应的b....
f.writeByte(b + '0');
}
f.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
复制代码
我在你的代码里边加入了较为容易理解的解释
你仔细看一下应该懂了
你查看API后,也可以发现DataOutputStream这个类的write方法的参数,是字符,而不是字符串
你里边存进去的是字符,不是字符串,是需要和ASCII码对应的
http://wenwen.soso.com/z/q217420814.htm?sp=4000
详细的表你可以看这里
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2