java程序编写的每个字符附加的不需要的字符

时间:2013-08-27 05:19:15

标签: java

通过以下代码将不需要的字符添加到文本文件中的单词。 请帮助我如何解决它。

try
    {
        Fout = new FileOutputStream("C:/IBM/omnibus.txt",true);
        dos = new DataOutputStream(Fout);     
        {
            dos.writeUTF(SitName.getText().toString() + "\t");
            dos.writeUTF(TTGrp.getText().trim() + "\t");
            dos.writeUTF(EmailGrp.getText().trim() + "\t");

            if(chkAlertY.isSelected())
                dos.writeUTF("1 \t");
            if(chkAlertN.isSelected())
                dos.writeUTF("0 \t");

            if(chkSmsY.isSelected())
                dos.writeUTF("1 \t");
            if(chkSmsN.isSelected())
                dos.writeUTF("0 \t");

            if(chkEmailY.isSelected())
                dos.writeUTF("1 \n");
            if(chkEmailN.isSelected())
                dos.writeUTF("0 \n");

            Fout.close();
       } 

输出>>

abc  NULETXdef  NUL ETXghi  1

新代码

try
        {
        FileWriter file = new FileWriter ("C:/IBM/omnibus.txt",true);
        BufferedWriter dos = new BufferedWriter(file);
        dos.write(SitName.getText().toString() + "\t");
        dos.write(TTGrp.getText().trim() + "\t");
        dos.write(EmailGrp.getText().trim() + "\t");

            if(chkAlertY.isSelected())
                dos.write("1 \t");
            if(chkAlertN.isSelected())
                dos.write("0 \t");

            if(chkSmsY.isSelected())
                dos.write("1 \t");
            if(chkSmsN.isSelected())
                dos.write("0 \t");

            if(chkEmailY.isSelected())
                dos.write("1 \n");
            if(chkEmailN.isSelected())
                dos.write("0 \n");

            file.close();

    }

        catch(Exception e)
          {
            System.out.println("The Exception Is : " +e);
          } 
    }

2 个答案:

答案 0 :(得分:3)

使用BufferedWriter而不是DataOutputStream。 DataOutputStream.writeUTF以特殊格式写入文本,该格式应该使用DataInputStream读取。看一下writeUTF API ...首先,将两个字节写入输出流,就像writeShort方法一样,给出要跟随的字节数......

答案 1 :(得分:2)

DataOutputStream#writeUTF()的输出是一个特殊的UTF格式字符串,旨在由DataInputStream#readUTF()方法读取。

writeUTF方法的java文档说明了写入的UTF字符串中的前2个字节。

  

使用修改后的UTF-8将字符串写入基础输出流   以与机器无关的方式进行编码。

     

首先,将两个字节写入输出流,就好像通过   writeShort方法给出要遵循的字节数。这个值是   实际写出的字节数,而不是长度   串。在长度之后,输出字符串的每个字符,   按顺序,使用修改后的UTF-8编码作为字符。如果   抛出没有异常,写入的计数器增加了   写入输出流的总字节数。这将是   至少两加上str的长度,最多加两次加三次   str的长度。