网站公告列表     学友堂,成就你我!  [admin  2006年11月29日]        
加入收藏
设为首页
联系站长
您现在的位置: 学友堂 >> 电脑网络 >> 编程 >> 文章正文
  写文件好帮手.java           
写文件好帮手.java
文章来源:不详 更新时间:2008-12-15 10:59:08 本站:学友堂  网址:www.3i3i.cn
学友堂 www.3i3i.cn

private static byte[] bytearr = null;
public static int writeUTF(String str, DataOutput out) throws IOException {
int strlen = str.length();
int utflen = 0;
int c, count = 0;

/* use charAt instead of copying String to char array */
for (int i = 0; i < strlen; i++) {
c = str.charAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
utflen++;
} else if (c > 0x07FF) {
utflen += 3;
} else {
utflen += 2;
}
}

if (utflen > 65535)
throw new UTFDataFormatException(
"encoded string too long: " + utflen + " bytes");

byte[] bytearr = null;
if (out instanceof DataOutputStream) {
if(File.bytearr == null || (File.bytearr.length < (utflen+2)))
File.bytearr = new byte[(utflen*2)];
bytearr = File.bytearr;
} else {
bytearr = new byte[utflen];
}


int i=0;
for (i=0; i<strlen; i++) {
c = str.charAt(i);
if (!((c >= 0x0001) && (c <= 0x007F))) break;
bytearr[count++] = (byte) c;
}

for (;i < strlen; i++){
c = str.charAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
bytearr[count++] = (byte) c;

} else if (c > 0x07FF) {
bytearr[count++] = (byte) (0xE0 | ((c >> 12) & 0x0F));
bytearr[count++] = (byte) (0x80 | ((c >> 6) & 0x3F));
bytearr[count++] = (byte) (0x80 | ((c >> 0) & 0x3F));
} else {
bytearr[count++] = (byte) (0xC0 | ((c >> 6) & 0x1F));
bytearr[count++] = (byte) (0x80 | ((c >> 0) & 0x3F));
}
}
out.write(bytearr, 0, utflen);
bytearr=null;
return utflen;
}

}

参考资料

jdk/src.zip/java/io/DataOutputStream.java

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    高强度文件夹加密大师破
    文件无法删除,怎么办?
    i386文件下载
    xp i386文件制作(下载)
    notepad.exe文件解析 下
    Comres.dll文件解析与下
    警惕“文件夹模仿者”U盘
    近期需严防文件夹伪装诱
    本周需注意:U盘病毒“文
    本周需注意:U盘病毒“文
     
    版权所有 2004-2012  学友堂 [3i3i.cn] 最佳分辨率 1024×768
    Copyright www.3i3i.cn All rights reserved.