Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。
public static void main(String []args) throws UnsupportedEncodingException {
// 运行结果:2
System.out.println("测试".getBytes("ISO8859-1").length)
// 运行结果:4
System.out.println("测试".getBytes("GB2312").length)
// 运行结果:4
System.out.println("测试".getBytes("GBK").length)
// 运行结果:6
System.out.println("测试".getBytes("UTF-8").length)
}
字节流读取数据例子如下:
import java.io.Fileimport java.io.FileInputStream
import java.io.FileNotFoundException
import java.io.FileOutputStream
import java.io.IOException
/**
* 复制文件
* @author young
*
*/
public class CopyFile {
public static void main(String[] args) {
/* 指定源exe文件的存放路径 */
String str = "f:/jdk-1_5_0_06-windows-i586-p.exe"
/* 指定复制后的exe的目标路径 */
String strs = "e:/copy.exe"
/* 创建输入和输出流 */
FileInputStream fis = null
FileOutputStream fos = null
try {
/* 将io流和文件关联 */
fis = new FileInputStream(str)
fos = new FileOutputStream(strs)
byte[] buf = new byte[1024 * 1024]
int len
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len)
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} finally {
try {
fis.close()
fos.close()
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
}
}