public static void main(String[] args) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream("E:/TEST2.txt");
byte[] b = new byte[]{'1',5,7,9};//文件中1显示正常,其余乱码
fos.write(b);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
请大神们讲的详细一点,多谢了!!

解决方案 »

  1.   

    byte b =‘a’;
    这个怎么理解呢?
      

  2.   

    byte存的就是字节,要是想打数字要用int
      

  3.   

    5
    '5'
    是有区别的
    带单引号的'5'会被解析成一个字符(其实也是一个ASCII码,不过这个码值是十进制的53)
    不带单引号的5对应的是 十进制为5的ASCII码(是个控制字符)
    关于ASCII请百度,一大堆
      

  4.   

    楼上的观点是正确的, 在写入文件的时候 相应得整形数据会以其ASCII吗的形式展示,并没有乱码,
    只是控制字符楼主不知道,为什么字符就可以呢?字符会先转换为整形byte,之后在文件中显示其ASCII
    就变成了原来的字符
      

  5.   

    byte b[] = {-27,55,66,77}; for(byte bs:b)
    System.out.println(bs);
    这个可以把数组里面的数字都打印出来直接用数字初始化一个byte也是可以打印出来的:
    byte bb = 77;//小于127也是可以打印的但是把一个string转为byte然后打印就是乱码了原因分析,string是对象,它包含的数据不只是其中存储的字符串,当把一个string对象转为byte时,得到的并不是其中字符转为的byte
    实例:
    byte bytes = 5;
    System.out.println(bytes);
    System.out.println("5".getBytes("iso8859-1"));//5是单个字符,iso8859-1中本身占用内存1字节,且小于127,本身绝对合法
    输出:
    5                     //前者正群输出
    [B@15db9742//后者出项乱码
      

  6.   

    Java IO流 之 FileInputStream 读取文件http://www.verejava.com/?id=1699461971466
      

  7.   

    输出的是ASCII