我之前的函数是这样的
public void PUTLINE ( String filePath,String lineConten ) throws Exception
{
File file=new File(filePath);
BufferedWriter bw=new BufferedWriter(new FileWriter(file,true));
try
{
bw.write(lineConten);
bw.newLine();
}
catch(IOException e)
{
}
finally
{
bw.flush();
bw.close();
} }
这个函数并没有错误,它被用在DB2的存储过程操作文件,问题是它写一行就要打开关闭这个文件一次,如果我处理了50000条数据,我要向文件当中写50000行,效率很低,能否像ORACLE一样操作文件的时候,打开一次关闭一次,想写多少行写多少行。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【jin_ok】截止到2008-07-09 12:37:46的历史汇总数据(不包括此帖):
    发帖的总数量:62                       发帖的总分数:980                      每贴平均分数:15                       
    回帖的总数量:133                      得分贴总数量:20                       回帖的得分率:15%                      
    结贴的总数量:55                       结贴的总分数:700                      
    无满意结贴数:22                       无满意结贴分:445                      
    未结的帖子数:7                        未结的总分数:280                      
    结贴的百分比:88.71 %               结分的百分比:71.43 %                  
    无满意结贴率:40.00 %               无满意结分率:63.57 %                  
    楼主加油
      

  2.   

    这个函数本身就是只写入一行的处理。你可以将String lineConten 改城树组或者是StringBuffer传进来.
    然后循环进行
    bw.write(lineConten); 
    bw.newLine(); 完成之后再
    bw.close(); 
      

  3.   

    LZ应该写一个封装类,专门干这个事情,如果不能写,那,我这里稍微写了一点代码,楼主参考一下. private String path;
    private BufferedWriter writer;
    private int writeCount=0;
    public void PUTLINE(String filePath, String lineConten) throws Exception {
    if(path==null || path.equals(filePath)==false){
    if(writer!=null){
    try{writer.flush();writer.close();}catch(Exception e){}
    }
    writer= new BufferedWriter(new FileWriter(filePath,true));
    }
    try {
    writer.write(lineConten);
    writer.newLine();
    writeCount++;
    if(writeCount%100==99)writer.flush();
    } catch (IOException e) {

    }
    protected void finalize() throws Throwable {
    super.finalize();
    if(writer!=null){
    writer.flush();writer.close();
    }
    }
      

  4.   

    哦,有个小bug
    重新改了一下:    private String path;
        private BufferedWriter writer;
        private int writeCount=0;
        public void PUTLINE(String filePath, String lineConten) throws Exception {
            if(path==null || path.equals(filePath)==false){
                if(writer!=null){
                    try{writer.flush();writer.close();}catch(Exception e){}
                }
                path=filePath;
                writer= new BufferedWriter(new FileWriter(filePath,true));
            }
            try {
                writer.write(lineConten);
                writer.newLine();
                writeCount++;
                if(writeCount%100==99)writer.flush();
            } catch (IOException e) {
            } 
        }
        protected void finalize() throws Throwable {
            super.finalize();
            if(writer!=null){
                writer.flush();writer.close();
            }
        }
      

  5.   


    finalize()方法在对象销毁的时候不保证被执行的啊