转载自:https://www.cnblogs.com/losesea/articles/3417800.html
看看下面怎么解释saveAs第二个参数;例子讲的很清楚。
========================
注意有红色和蓝色的语句,现在你的情况就是红色语句的情况,蓝色语句解释了为什么。
==============================
Files类中的saveAs()方法用于保存文件,在File类中提供了两种形式的saveAs()方法:
saveAs(String destFilePathName)方法。
saveAs(String destFilePathName, int optionSaveAs)方法。
这两个方法没有返回值,第一种形式与saveAs(destFilePathName, 0)执行效果相同。
参数说明 :
l destFilePathName:指定文件保存的路径,包括文件名。其值应以“/”开头。
l optionSaveAs:保存目标选项。该选项有3个值,分别是SAVEAS_AUTO、SAVEAS_VIRTUAL和SAVEAS_PHYSICAL。它们是File类中的静态字段,分别表示整数 0 、1 、2。将optionSaveAs参数设为SAVEAS_VIRTUAL选项值,则通知jspSmartUpload组件以Web应用的根目录为文件根目录,然后加上destFilePathName参数指定的路径来保存文件;设为SAVEAS_PHYSICAL值,则一种情况是通知jspSmartUpload组件将以Web服务器的安装路径中的磁盘根目录为文件根目录,然后加上destFilePathName参数指定的路径来保存文件,另一种情况则以destFilePathName参数指定的目录为最终目录来保存文件;设为SAVEAS_AUTO值,则首先以SAVEAS_VIRTUAL方式来保存文件,若Web应用下由destFilePathName参数指定的路径不存在,则以SAVEAS_PHYSICAL方式保存文件。
例如,若Web服务器(以Tomcat为例)的安装目录为“E:\Tomcat 5.5”,当前Web应用为“FileUpDown”,下面分别应用这3个选项保存文件。
saveAs("/file/myfile.txt",File.SAVEAS_VIRTUAL)或saveAs("/file/myfile.txt",1)
若FileUpDown应用下存在“file”子目录,则将上传的文件以“myfile.txt”为文件名进行保存,实际的保存路径如下:
E:\Tomcat 5.5\webapps\FileUpDown\file\myfile.txt
若不存在“file”子目录,则抛出下面的异常:
This path does not exist (1135)
saveAs("/file/myfile.txt",File.SAVEAS_PHYSICAL)或saveAs("/file/myfile.txt",2)
因为Tomcat 5.5安装在E盘,因此若E盘根目录下存在“file”子目录,则将上传的文件以“myfile.txt”为文件名进行保存,实际的保存路径如下:
E:\file\myfile.txt
若E盘根目录下不存在“file”子目录,而FileUpDown应用的根目录下存在“file”子目录,则抛出下面的异常:
The path is not a physical path
否则抛出下面的异常:
This path does not exist (1135)
使用SAVEAS_PHYSICAL选项值时,可以将上传的文件保存到由destFilePathName参数指定的一个具体的目录下,例如:
saveAs("D:/temp/myfile.txt",File.SAVEAS_PHYSICAL)
最终文件的实际保存路径如下:
D:\temp\myfile.txt
(3)使用SAVEAS_AUTO选项值。
saveAs("/file/myfile.txt",File.SAVEAS_AUTO)或saveAs("/file/myfile.txt",0)
若FileUpDown应用根目录下存在“file”子目录,则以SAVEAS_VIRTUAL方式保存文件,否则以SAVEAS_PHYSICAL方式保存文件。
通常情况下应使用SAVEAS_VIRTUAL方式保存文件,以便程序的移植。