试试:import java.io.FileOutputStream;
public class CharTest{
public static void main(String[] args) throws java.io.IOException{
char c = '我';
FileOutputStream out = new FileOutputStream("c:/test.txt");
out.write(("" + c).getBytes());
out.close();
out = new FileOutputStream("c:/test1.txt");
c = 'A';
out.write((int)c);
out.close();
}
}
public class CharTest{
public static void main(String[] args) throws java.io.IOException{
char c = '我';
FileOutputStream out = new FileOutputStream("c:/test.txt");
out.write(("" + c).getBytes());
out.close();
out = new FileOutputStream("c:/test1.txt");
c = 'A';
out.write((int)c);
out.close();
}
}
在内存是char是unicode编码,占两字节,但是存成文件就要看是用哪种编码,utf-8,utf-16等都不相同的。是吗?可是又出现了这样的问题
out = new FileOutputStream("f:/test1.txt");
a = "A".getBytes("Unicode");
System.out.println(a.length);
out.write(a);
out.close();
文件的大小是四个字节
一个字节是FF,也就是256个字符,11111111
当中ASCII编码常规字符部分的范围是0-127(其实是从32(空格)开始的),如果这个字节>127(1XXXXXXX),系统会按双字节字符来读取,如果<127(0XXXXXXX),自然都是一些单字节的符号,自然就按单字符对待了,既然这样,存文件的时候就没必要多浪费一个字节来保存了,所以就省略了.按你的说法,int在java中是占四个字节的,难道还真的用四个字节来保存1,2,3....不成?没研究过这方面的内容,只是个人观点,权当抛砖引玉
如:
out.write(1);
得到文件的大小为1
同写入char得到的大小一样
在jre里可能这样处理吧:
byte[] tmp='a'.getBytes("GBK"); //"GBK"是根据你的系统得到的
file.put(tmp);所以得到的是一个字节