Java SAX解析器在windows中不工作?

Java SAX解析器在windows中不工作?,java,xml,Java,Xml,我有多个名为media01.xml、media02.xml等xml文件。 我编写了一个java代码,它解析这个xml文件,获取它的表名并重命名xml文件。例如:media01-->Records.xml、media02-->Info.xml等。 该守则的部分内容如下: File inputFile = new File(path+File.separator+"media0"+xmlval+".xml"); if(inputFile.exists()) {

我有多个名为media01.xml、media02.xml等xml文件。 我编写了一个java代码,它解析这个xml文件,获取它的表名并重命名xml文件。例如:media01-->Records.xml、media02-->Info.xml等。 该守则的部分内容如下:

 File inputFile = new File(path+File.separator+"media0"+xmlval+".xml");
     if(inputFile.exists())
     {
         try{
         SAXParserFactory factory = SAXParserFactory.newInstance();
         SAXParser saxParser = factory.newSAXParser();
         aaaa a= new aaaa();
         saxParser.parse(inputFile, a);  
         String abc = aaaa.nsList();
         File dest = new File(path+File.separator+abc+".xml");
         inputFile.renameTo(dest);
         xmlval++;
         }
         catch(Exception e)
         {
             System.err.println(""+e);
         }
     }
我调用的函数是:

class aaaa extends DefaultHandler {
 boolean bFirstName = false;
 boolean bLastName = false;
boolean loc = false;
 String name = null;
static String ans;


 @Override
 public void startElement(String uri,String localName, String qName, Attributes attributes)
  throws SAXException {
  if (qName.equalsIgnoreCase("table")) {
     name = attributes.getValue("name");
  }
  if(qName.equalsIgnoreCase("row")){     
  } 
  ans=name;
 }
 public static String nsList(){   
   return ans;
}
 }
我在服务器上部署了我的项目,当我从ubuntu操作系统运行该项目时,xml文件名会发生变化,但当我从windows运行时,xml文件名会发生变化,因此不会重命名这些文件。可能是什么问题?
请帮帮我。提前感谢。

我不认为这是一个解析器问题,因为没有问题,而且很多依赖SAX解析配置文件的项目都使用SAXParser,比如Spring、jsf和其他很多项目,所以这不太可能是SAXParser问题,所以问题可以由我来解决

File dest = new File(path+File.separator+abc+".xml");
inputFile.renameTo(dest);
这是平台相关的指令,您最好通过这样做来检查重命名是否成功完成

File dest = new File(path+File.separator+abc+".xml");
boolean renameSuccess=inputFile.renameTo(dest);
System.out.println("renaming "+renameSuccess?"succeeded":"failed");

在将在一个系统上测试的应用程序部署到另一个系统时,我可能遇到的一个问题是,在类Unix系统上,路径和文件名区分大小写。您的文件可能已经存在于目标系统上,但情况不同。无论如何,正如achabahe提到的,重命名文件时应该检查返回值

另外,路径分隔符依赖于系统,但通常Java不会产生任何问题。例如,您可以在Windows路径中使用“/”。我只是建议您以这种方式实例化
文件
对象:

File myFile = new File(myPath, myFileName);
这是如此容易阅读和系统独立


我还建议您跟踪是否确实打开了源文件。顺便问一下,您不能在调试模式下运行它吗?

您的文件路径是什么,它是可写的吗?是否有异常抛出?您是否检查了输出(在您的控制台中,shell…)?您是否意识到行
if(qName.equalsIgnoreCase(“row”){}
完全不执行任何操作?好的。。。它不会抛出任何异常调试可以在localhost和localhost中完成