0

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

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);
          } 
    }
4

2 回答 2

3

使用 BufferedWriter 而不是 DataOutputStream。DataOutputStream.writeUTF 以应使用 DataInputStream 读取的特殊格式写入文本。看一下 writeUTF API ...首先,两个字节被写入输出流,就好像通过 writeShort 方法给出了后面的字节数......

于 2013-08-27T05:25:54.350 回答
2

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

writeUTF方法的 Java 文档说明了书面 UTF 字符串中的前 2 个字节。

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

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

于 2013-08-27T05:26:03.430 回答