我有一个带有此代码的JSP
File folder = new File("C:/Servidorweb/apache-tomcat-6.0.37/webapps/facturacion_sms/archivos");
File[] listOfFiles = folder.listFiles();
//Inicializa array contenedor de nombres de archivos
String[] array = new String[listOfFiles.length];
for (int i = 0; i < listOfFiles.length; i++) //Recorrido a lista de archivos , se almacenan en array
{
if (listOfFiles[i].isFile())
{
array[i] = listOfFiles[i].getName();
//out.println(array[i]);
}
}
for(int j = 0; j < array.length ;j++)
{
String archivostr = "C:/Servidorweb/apache-tomcat-6.0.37/webapps/facturacion_sms/archivos/" + array[j];
out.println(archivostr);
File archivo = new File(archivostr);
try
{
archivo.delete();
}
catch (Exception e)
{
out.println("An exception occurred: " + e.getMessage());
}
}
在我的本地Web服务器上一切正常但是当我在Red Hat中运行JSP时archivo.delete();
无效。我有所有.jar和路径都很好(当我将其上传到另一台服务器时我更改了路径,我知道路径中没有错误,因为我在循环中打印了它。)
此外,它不会抛出任何异常。
Web服务器是TOMCAT6和OS RedHat 本地Web服务器TOMCAT6和Windows
任何想法?
答案 0 :(得分:2)
Everything works fine in my local web server but when I run the JSP in Red Hat the archivo.delete(); doesn't work.
这是因为当您切换到不同的操作系统时文件系统会发生变化,并且访问该文件的方式也会发生变化,如果您对此路径进行硬编码,则无法访问不同操作系统上的文件
答案 1 :(得分:0)
我认为你确实遇到了分隔符问题。
String archivostr = "C:/Servidorweb/apache-tomcat-6.0.37/webapps/facturacion_sms/archivos/" + array[j];
在上面的代码中,只需尝试使用
String archivostr = "C:"+File.separator+"Servidorweb"+File.separator+"apache-tomcat-6.0.37"+File.separator+"webapps"+File.separator+"facturacion_sms"+File.separator+"archivos"+File.separator+array[j];
答案 2 :(得分:0)
使用File.separator而不是斜杠。