以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  [求助]transform写xml,什么时候释放文件?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=57118)


--  作者:summer3008
--  发布时间:12/24/2007 10:33:00 AM

--  [求助]transform写xml,什么时候释放文件?
我用transform写xml,由于业务需要,要先写成.lock文件,然后再重命名一下。

String filename = dir + sdf.format(new Date());       
        java.io.File f= new java.io.File(filename + ".lock");
        StreamResult result = new StreamResult(f);
        transformer.transform(source, result);
        saveHelp.xmlReName(filename);//重命名


public static void xmlReName()
    {
        java.io.File f=new java.io.File("D:/tmp");        
        String[] s=f.list();
        if(s!=null){
        for(int i=0;i<s.length;i++){
            String strfilename=s[i];
            int l=strfilename.indexOf(".lock");
            if (l==-1){
                continue;
            }
            strfilename="D:/tmp/"+strfilename.substring(0,l);
            resetSendName(strfilename);
        }
        }
           
    }

private static boolean resetSendName(String filename)
    {
        File f = new File(filename + ".lock");
        File f1 = new File(filename + ".xml");
        try
        {
            Thread.sleep(5000);//等了5秒
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        if (f.renameTo(f1))
        {
            return true;
        }
        else
        {
            System.out.println("重命名文件失败!");
            return false;
        }
    }

在测试环境里,让他等1秒钟,也可以正常实现。
但是实施到服务器上,即使改成5秒,还是不能修改……(但是写下一个文件时,上一个文件就可以修改了……)

是不是因为文件没写完,被锁定了呢?
怎样判断文件写完了呢?已经给了5秒阿??
55555555555555555

谢谢!!!!


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
49.072ms