Fileupload有效! 但是如果我添加了两个文件,那么文件中的数据就会被修正存储。 如果我查看调试模式,它的工作原理。我认为问题是一个文件和文件之间的时间。我可以添加睡眠或其他只会添加第一个文件而不是第二个文件的其他文件。像顺序而不是并行?
fileupload代码如下所示:
<p:fileUpload id="fileUpload" label="#{msgs.durchsuchen}" uploadLabel="#{msgs.upload}" cancelLabel="#{msgs.cancel}" fileUploadListener="#{importData.handleFileUpload}" mode="advanced" dragDropSupport="true"
update="Collection,messages" sizeLimit="1000000" allowTypes="/(\.|\/)(txt|csv)$/" onstart="submitCollection()"/>
为了以正确的顺序获取csv格式的数据,我添加了以下代码:
List<String> attr = new ArrayList<String>();
List<String[]> value = new ArrayList<String[]>();
InputStream temp = event.getFile().getInputstream();
Boolean firstLine = true;
if(temp != null){
/*"\\s*;\\s*" die rechte Seite und die Linke Seite wird durch den ; getrennt.*/
Scanner scanner = new Scanner(temp, "UTF-8");
while(scanner.hasNextLine()){ //Es wird immer eine komplette Zeile überprüft
String line = scanner.nextLine(); //Die komplette Zeile wird in einen String gespeichert
String[] fields = line.split(";"); //Anschließend wird die Zeile an dem ; zerschnitten.
if(firstLine){
for(String field : fields){
attr.add(field);
System.out.println(field);
}
firstLine = false;
}else{
value.add(fields);
}
}
tempListMap = readImportFile.getTheDocInformation(attr, value); //In der Klasse werden die Keys und Values in einer Map zusammengebaut.
scanner.close();
有什么想法吗?