如何用java程序创建一个带有BOM标志的txt文件。

解决方案 »

  1.   

    什么BOM啊?
    难道是Bill of Materials 
    难道兄弟也是搞MES,Shop flow control的?
      

  2.   

    Byte-order Mark给楼主的参考:
    http://codesnipers.com/?q=node/68
      

  3.   

    答:这很方便啊。代码如下:OutputStreamWriter fos = new OutputStreamWriter(
    new FileOutputStream(new File("c:\\t.txt")), "UTF-16LE"); 
    fos.write(0xFEFF);  //BOM      
    fos.write("你好"); 
    fos.flush(); 
    fos.close();
      

  4.   

    我想用UTF-8的格式
    fos.write(0xFEFF);  //BOM   
    应该用什么?
      

  5.   

    答:
    0xEF 0xBB 0xBF for UTF-8 
      

  6.   

    OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(f), enc); 
    fos.write(0xEF);  //BOM
    fos.write(0xBB);  //BOM
    fos.write(0xBF);  //BOM
    fos.write("abcd"); 
    fos.flush(); 
    fos.close();
    还是
    OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(f), enc); 
    fos.write(0xEFBBBF);  //BOM
    fos.write("abcd"); 
    fos.flush(); 
    fos.close();public class FileUtil {
    public static void main(String[] args) throws IOException {
    String enc = "UTF-8";
    File f = new File("E:\\t.txt");
    writeStringToFile(f, "abcd", enc);
    readFile(f);
    }
    public static void writeStringToFile(File f, String content, String enc) throws IOException {
       OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(f), enc); 
       fos.write(0xEFBBBF);  //BOM
       fos.write("abcd"); 
       fos.flush(); 
       fos.close();
    }
    public static void readFile(File f) throws IOException{
       InputStream ios=new FileInputStream(f);
       byte[] b=new byte[1024];
       ios.read(b);
       ios.close();
       if(b[0] == -17&&b[1] == -69&&b[2] ==-65){
           System.out.println(f.getName()+":UTF-8"); 
       }else{
           System.out.println(f.getName()+":其它");
       }
    }
    }上面是我的程序  为什么输出结果是:其它
    而且在txt文档里abcd之前有个黑色方块   求大虾指点````
      

  7.   

    答:是:
    fos.write(0xEF);     //BOM 
    fos.write(0xBB);     //BOM 
    fos.write(0xBF);     //BOM 
    fos.write( "abcd ");   另外:你看一下:http://www.w3.org/International/questions/qa-utf8-bom
    可回答你的BOM在编辑器中的显示问题。
      

  8.   

    fos.write(0xEF);    //BOM 
    fos.write(0xBB);    //BOM 
    fos.write(0xBF);    //BOM 
    fos.write( "abcd ");  
    好像是不对的  生成的文件右键属性显示大小是10字节 
    结果应该是占7字节阿(BOM占的3个字节加上abcd的4字节)
    而且程序的运行结果是:其它   并不是:UTF-8
      

  9.   

    答:楼主试试这个:
    OutputStream  fos  =   new     FileOutputStream("d:/t.txt");   
    fos.write((byte)0xEF);     //BOM 
    fos.write((byte)0xBB);     //BOM
    fos.write((byte)0xBF);     //BOM
    fos.write( "abcd".getBytes("UTF-8"));   
    fos.flush();   
    fos.close(); 
      

  10.   

    晕了  fos.write( "abcd".getBytes("UTF-8"));   这么写会出错的  不行哦
      

  11.   

    答:怎么可能呢?我10楼给的代码运行是成功的啊。你要注意,直接使用的是字节流FileOutputStream
      

  12.   


    恩10楼那个是对的  把FileOutputStream 看错了  结帖  分给你了,谢谢了~!