2017-09-03 28 views
0

我使用html表單輸入文件並使用doPost()方法HTTPservlet上傳文件。 [該部分在包1中完成]現在,從類Main.java中的函數解析在此doPost方法中調用上載的文件。這個函數駐留在另一個包中。 [移到其他包 - >]在這裏,類Main.java調用Integrated.java,其中包含需要調用的所有類和函數的實例,以便解析上傳的文件。 (我有提取數據,分塊,排序和生成csv從分析的數據中分離的類)java - opencsv類獨立完美工作,但在被另一個類調用時不寫入CSV

解析文件後,我將值放入最後一個文件CSVgenerator.java中初始化的變量中。這些變量的值在類SortAndOutput.java之前添加。爲了測試我在課堂中獲得了正確的值,我在打電話給功能writingDatabase()writingTraining()之前打印這些變量。這兩個函數將變量的值保存在CSV文件中。 我使用OpenCSV編寫文件。使用apache提卡提取數據和lingpipe解析。我(故意)在CSVgenerator.java中寫入主要func並測試它。這兩個文件都正確寫入。缺少的值列留空。完善! (如果我有任何的CSV單獨打開,它會引發一個像它應該的異常)

但是,當我註釋掉主要功能並在服務器上一起運行整個項目時,不會寫入CSV。即使這些文件是單獨打開的(在eclipse之外),它也不會給出錯誤。 我已經通過在Main.java中加入主要方法來測試整個集成Java代碼,並且它運行完美。 servlet運行時出現問題/我在服務器上運行項目。

我不知道其他文件將有助於與否,我張貼的層次和CSVgenerator類 Workspace Screenshot CSVGenerator.java

package com.fypv1.parser; 
 

 
import java.io.*; 
 
import java.util.*; 
 

 
import com.opencsv.*; 
 
public class CSVgenerator { 
 

 
\t public static String CGPAinitial="-"; \t 
 
\t public static String universityNameOut="-"; 
 
\t public static String emailIDOut="-"; 
 
\t public static String phoneNoOut="-"; 
 
\t public static String phpKnow="NO"; 
 
\t public static String databaseKnow="NO"; 
 
\t public static String jsKnow="NO"; 
 
\t public static String bootStrapKnow="NO"; 
 
\t public static String aspKnow="NO"; 
 
\t public static String htmlKnow="NO"; 
 
\t public static String cssKnow="NO"; 
 
\t public static String jqueryKnow="NO"; 
 
\t public static String jspKnow="NO"; 
 
\t public static String reactjsKnow="NO"; 
 
\t public static String ajaxKnow="NO"; 
 
\t public static String oopKnow="NO"; 
 
\t public static String javaKnow="NO"; 
 
\t public static String androidKnow="NO"; 
 
\t private int idNumber; 
 
\t Writer wr; 
 
\t Scanner scanner; 
 
\t 
 
\t /* 
 
\t * public static void main(String[] args) throws IOException { 
 
\t 
 
\t new CSVgenerator(); \t 
 
\t } 
 
\t */ 
 
\t //DEFAULT CLASS CONSTRUCTOR 
 
\t CSVgenerator() throws IOException 
 
\t { 
 
\t String trainingCSV = "TrainingData.csv"; 
 
\t String databaseCSV = "databaseInfo.csv"; 
 
\t String idNumberFile = "idnum.txt"; 
 
\t \t 
 
    try { 
 
\t \t scanner = new Scanner(new File(idNumberFile)); 
 
\t \t SortAndOutput.applicantIDnumber=scanner.nextInt(); 
 
\t \t idNumber=SortAndOutput.applicantIDnumber; 
 
\t \t \t 
 
\t } catch (FileNotFoundException e1) { 
 
\t \t // TODO Auto-generated catch block 
 
\t \t System.out.println("IDnumberFileUnavailable"); 
 
\t } \t  
 
\t 
 
\t try { 
 
\t \t wr = new FileWriter(idNumberFile); 
 
\t \t int newIDNumber=idNumber+1; 
 
\t \t wr.write(newIDNumber+""); 
 
\t \t wr.close(); 
 
\t } catch (IOException e1) { 
 
\t \t // \t 
 
\t \t e1.printStackTrace(); 
 
\t } \t  
 
\t //System.out.println(String.valueOf(idNumber)+"+"+universityNameOut+"+"+CGPAinitial+"+"+emailIDOut+"+"+ phoneNoOut+"+"+CGPAinitial+"+"+phpKnow+"+"+ databaseKnow+"+"+ jsKnow+"+"+ bootStrapKnow+"+"+ aspKnow+"+"+ htmlKnow+"+"+ cssKnow+"+"+ jqueryKnow+"+"+ jspKnow+"+"+ reactjsKnow+"+"+ ajaxKnow+"+"+ \t "?"); 
 
\t \t writingDatabase(databaseCSV); 
 
\t \t writingTraining(trainingCSV); 
 

 
\t }//CONSTRUCTOR ENDS 
 
\t 
 
\t 
 
\t 
 
\t void writingDatabase(String databaseCSV) throws IOException { 
 
\t \t CSVWriter dbWriter; 
 
\t \t 
 
\t \t String [] record1={String.valueOf(idNumber),universityNameOut,CGPAinitial,emailIDOut, phoneNoOut }; 
 
\t \t dbWriter= new CSVWriter(new FileWriter(databaseCSV, true)); 
 
\t \t dbWriter.writeNext(record1); 
 
\t  \t dbWriter.close(); 
 
\t \t } 
 

 
\t void writingTraining(String trainingCSV) throws IOException { 
 
\t \t CSVWriter trainingWriter; \t \t 
 
\t \t 
 
\t \t String [] record={String.valueOf(idNumber),CGPAinitial,phpKnow, databaseKnow, jsKnow, bootStrapKnow, aspKnow, htmlKnow, cssKnow, jqueryKnow, jspKnow, reactjsKnow, ajaxKnow, "?"}; 
 
\t \t trainingWriter = new CSVWriter(new FileWriter(trainingCSV, true)); 
 
\t \t trainingWriter.writeNext(record); 
 
\t \t trainingWriter.close(); \t 
 
\t \t } 
 
\t 
 
\t } 
 
\t

綜合.java

ResumeUploadService.java(servlet的)

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 

        try { 
         Part file = request.getPart("file"); 
         resumeFileName = Paths.get(file.getSubmittedFileName()).getFileName().toString(); 
         file.write(path + resumeFileName); 
         printOnClient(response, "Upload Successful!"); 
        } 
        catch (Exception e) { 
         printOnClient(response, "Upload Failed!"); 
         } 

      new Main(path,resumeFileName); 

    } 

請讓我知道,如果需要更多的代碼來調試此。

+0

請發表[MCVE] – 2017-09-03 18:56:31

+0

@RC爲絕對路徑指定配置參數來你的servlet。該項目是巨大的:/我該怎麼做? –

+0

您的文件是相對於執行類路徑寫入的。你爲什麼不給絕對路徑? –

回答

0

這兩次更新文件。當它運行在服務器上,它在eclipse文件夾中創建文件,當我作爲Java應用程序,它的項目文件夾

你的文件被寫入應用程序文件夾,除非另有說明,在更新的文件。這是正在運行的應用程序的相對路徑

僅僅因爲您在Eclipse中測試應用程序並不意味着服務器部署會寫入相同的文件夾。

理想情況下,你可以在那裏的文件將被存儲

相關問題