FileOutputStream写得比应该少

时间:2015-06-02 09:50:07

标签: java file file-io fileoutputstream

我正在尝试编写一个程序,将一个节点的数据保存到.txt中,但是当我执行该程序时,它应该写的更少(有时甚至没有)。这是代码:

 var message = encodeURI($scope.message);   
 var request = $http.post('api/comment/?message=' + message);

....

GeneradorSeñal和GeneradorSeñalSinusoidal是创建正弦曲线的类。 gs.getSalida()返回正弦曲线的值,正弦曲线类运行良好,不是问题。

3 个答案:

答案 0 :(得分:5)

确保始终调用输出流的close()方法。这可以确保将所有缓冲的数据写入流中。

此外,如果您正在撰写字符,则使用FileWriter会更方便。

答案 1 :(得分:0)

我改进了你的代码:

... ...
try{
    FileOutputStream out = new FileOutputStream("out.txt"); 
    OutputStreamWriter muestras = new OutputStreamWriter(out);

    for(int i=0; i<500; i++){
        salida=gs.getSalida();
        muestras.write(String.valueOf(salida)+"\n");
        System.out.println(i+"\t"+salida);
    }
    muestras.flush();
}catch(Exception e){
    e.printStackTrace();
}finally{
    if(out!=null){
        try{out.close();}
        catch(Throwable e){
             e.printStackTrace();
        }

    }
}

最后使用以确保输出流100%关闭。如果out未初始化,则使用“out!= null”。关闭'out'而不是关闭“muestras”,如果out已打开但“muestras”不是。

答案 2 :(得分:0)

试试这个..

try{
 for(int i=0; i<500; i++){
        salida=gs.getSalida();
        muestras.write(String.valueOf(salida)+"\n");
        muestras.flush();
        System.out.println(i+"\t"+salida);
    }
}catch(IOException ioe){
    ioe.printStackTrace();
}finally{
    try{
       muestras.close();
    }finally{}
}