2017-09-03 32 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中测试应用程序并不意味着服务器部署会写入相同的文件夹。

理想情况下,你可以在那里的文件将被存储

相关问题