我使用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);
}
請讓我知道,如果需要更多的代碼來調試此。
請發表[MCVE] – 2017-09-03 18:56:31
@RC爲絕對路徑指定配置參數來你的servlet。該項目是巨大的:/我該怎麼做? –
您的文件是相對於執行類路徑寫入的。你爲什麼不給絕對路徑? –