如何在JSF和PrimeFaces中上传和读取文本文件?
如何在JSF和PrimeFaces中上传和读取文本文件?
我需要使用PrimeFaces和JSF上传和读取一个文本文件。我的问题是,当我上传文本文件时,它存储在哪里?\n以下是我的.xhtml文件:\n
问题的原因是用户想要在JSF和PrimeFaces中上传和读取文本文件,但不清楚如何实现。为了解决这个问题,用户通过以下方式读取文件:
private UploadedFile file; public void upload() { if (file != null && !"".equals(file.getFileName())) { try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(file.getInputstream(), "UTF-8"))) { String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } } catch (Exception ex) { LOG.error("Error uploading the file", ex); } } }
上述代码中,用户首先创建了一个`UploadedFile`对象`file`用于接收上传的文件。然后,用户使用`BufferedReader`从`file`的输入流中读取文件内容。在读取过程中,用户通过`readLine()`方法逐行读取文件内容,并将每行内容打印到控制台。最后,用户捕获并处理任何可能的异常。
通过以上代码,用户可以实现在JSF和PrimeFaces中上传和读取文本文件的功能。
当我上传文本文件时,它会存储在哪里?
实际上,这与你无关,你不应该对此感兴趣。它部分地存储在内存中和/或服务器的临时存储位置,这些位置会定期被清除。它绝对不是永久存储位置。在操作/监听方法中,你只需要读取上传的文件内容并将其存储在你选择的永久存储位置即可。
例如:
private static final File LOCATION = new File("/path/to/all/uploads"); public void upload() throws IOException { if (file != null) { String prefix = FilenameUtils.getBaseName(file.getName()); String suffix = FilenameUtils.getExtension(file.getName()); File save = File.createTempFile(prefix + "-", "." + suffix, LOCATION); Files.write(save.toPath(), file.getContents()); // 添加成功消息 } }
注意,`FilenameUtils`是Apache Commons IO的一部分,你应该已经安装了它,因为它是`