通过以下代码将不需要的字符添加到文本文件中的单词。 请帮助我如何解决它。
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);
}
}
答案 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的长度。