黑马程序员技术交流社区

标题: 求大神,求围观! [打印本页]

作者: ↙五线谱╲    时间: 2013-12-4 10:56
标题: 求大神,求围观!
public static void write(Word word) throws Exception{
         
        File file = new File("tokenOut.txt");
         
        if(!file.exists()){
            
            System.out.println("file not exist!");
        }else{
            
            DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
            System.out.println("--->" + word.getMessage());
            out.writeUTF(new String(word.getMessage().getBytes(), "UTF-8"));
        }
    }
中的out.writeUTF(new String(word.getMessage().getBytes(), "UTF-8"));
每次都把前面写的覆盖了,怎么办?
作者: kongling    时间: 2013-12-5 09:55
是应该采取追加写的方式吧,
DataOutputStream out = new DataOutputStream(
new FileOutputStream(file,true));
作者: 李红亮    时间: 2013-12-5 10:39
楼主,你好,你这句代码用错构造方法了,DataOutputStream out = new DataOutputStream(new FileOutputStream(file));,如果你用了FileOutputStream(File file)这个构造方法的话 ,你每一次运行
代码的时候,程序会从新创建一个文件的,把原来文件覆盖掉,所以用FileOutputStream(File file)这个
构造方法的时候要特别注意,覆盖掉你有用的资料就不好了,想要不给覆盖掉的话,用这个构造方法FileOutputStream(File file,boolean append),在你这里的话也就是写成这样DataOutputStream out = new DataOutputStream(new FileOutputStream(file,true));
作者: 王家胜    时间: 2013-12-6 17:38
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。创建一个新 FileDescriptor 对象来表示此文件连接。
帮你改的
  1. public class Wjs
  2. {
  3.         public static void write(Word word) throws Exception{
  4.         
  5.         File file = new File("tokenOut.txt");
  6.          
  7.         if(!file.exists()){
  8.             
  9.             System.out.println("file not exist!");
  10.         }else{
  11.             
  12.             DataOutputStream out = new DataOutputStream(new FileOutputStream(file,true));
  13.             System.out.println("--->" + word.getMessage());
  14.             out.writeUTF(new String(word.getMessage().getBytes(), "UTF-8"));
  15.         }
  16.     }
  17. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2