今天遇到個(gè)bug,。
這是個(gè)導(dǎo)出功能,,使用的是POI,使用已經(jīng)做好的模板,,向里面添加數(shù)據(jù),,在action中進(jìn)行處理。
首先取得模板,,
路徑:- \\export\\excel\\template\\temp.xls
代碼:
- String modelpath = getRequest().getSession().getServletContext().getRealPath("/")+ CommonConstants.MODEL_PATH;
我電腦使用的win7系統(tǒng),。以上代碼我在本地tomcat測(cè)試,很正常,。導(dǎo)出一點(diǎn)問(wèn)題沒有,。
當(dāng)提交到測(cè)試組,測(cè)試就報(bào)出bug:
- java.io.FileNotFoundException: /usr/local/apache-tomcat-5.5.23/webapps/項(xiàng)目名稱\export\excel\template\temp.xls (No such file or directory)
- at java.io.FileInputStream.open(Native Method)
- at java.io.FileInputStream.<init>(FileInputStream.java:106)
- at java.io.FileInputStream.<init>(FileInputStream.java:66)
- at com.stock.wrhcheck.web.StockCheckAction.exportExcel(StockCheckAction.java:85)
- ,。,。,。。,。。
開始還覺得很奇怪,,怎么會(huì)就找不到模板文件呢,?
仔細(xì)想下,想起不同系統(tǒng)的文件分隔符是不相同的:
- 獲得系統(tǒng)名字
-
- System.out.println(System.getProperty( "os.name "));
-
- ----------------------------
-
- 獲得系統(tǒng)文件分隔符
-
- System.out.println(System.getProperty("file.separator"));
-
- 文件分隔符,各個(gè)操作系統(tǒng)不一樣
- 如WIndows的是"\",而Unix的是"/"
修改成下面就沒問(wèn)題了:
- String modelpath = getRequest().getSession().getServletContext().getRealPath(CommonConstants.FILESEPARATOR)+ CommonConstants.MODEL_PATH;
- public static final String FILESEPARATOR = System.getProperty("file.separator");
- public static final String MODEL_PATH =FILESEPARATOR+"export"+FILESEPARATOR+"excel"+FILESEPARATOR+"template"+FILESEPARATOR+"temp.xls" ;
雖然問(wèn)題很小,,如果不注意所不定要花費(fèi)很久去處理,。還好想起系統(tǒng)分隔符的原因:
|