如何在JSF和PrimeFaces中上传和读取文本文件?

14 浏览
0 Comments

如何在JSF和PrimeFaces中上传和读取文本文件?

我需要使用PrimeFaces和JSF上传和读取一个文本文件。我的问题是,当我上传文本文件时,它存储在哪里?\n以下是我的.xhtml文件:\n\n\n\nJava类:\npublic class Send {\n private UploadedFile file;\n public void upload() {\n if (file != null) {\n FacesMessage msg = new FacesMessage(\"成功\", file.getFileName() + \" 已上传。\");\n FacesContext.getCurrentInstance().addMessage(null, msg);\n }\n }\n}\n我还发现了这个例子来读取文件:\nimport java.io.BufferedReader;\nimport java.io.FileReader;\nimport java.io.IOException;\npublic class BufferedReaderExample {\n public static void main(String[] args) {\n try (BufferedReader br = new BufferedReader(new FileReader(\"C:\\\\testing.txt\")))\n {\n String sCurrentLine;\n while ((sCurrentLine = br.readLine()) != null) {\n System.out.println(sCurrentLine);\n }\n } catch (IOException e) {\n e.printStackTrace();\n }\n }\n}\n我另外一个问题是,在这个例子中,\"C:\\\\testing.txt\"被给定为路径?我必须给出哪个地址来读取我上传的文件?

0
0 Comments

问题的原因是用户想要在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中上传和读取文本文件的功能。

0
0 Comments

问题的原因是无法在JSF和PrimeFaces中上传和读取文本文件。解决方法是参考与此问题相关的stackoverflow线程,该线程解决了如何使用Java将文件上传到远程服务器的问题。如果stackoverflow线程中的解决方法不适用,可以向提问者求助。

0
0 Comments

当我上传文本文件时,它会存储在哪里?

实际上,这与你无关,你不应该对此感兴趣。它部分地存储在内存中和/或服务器的临时存储位置,这些位置会定期被清除。它绝对不是永久存储位置。在操作/监听方法中,你只需要读取上传的文件内容并将其存储在你选择的永久存储位置即可。

例如:

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的一部分,你应该已经安装了它,因为它是``的必需依赖项。此外,注意上面的示例中的`File#createTempFile()`实际上并没有生成一个临时文件,它只是用于生成一个唯一的文件名。否则,当其他人巧合地上传一个与现有文件完全相同的文件时,它将被覆盖。另请注意,`Files#write()`是Java 7的一部分。如果你仍在使用Java 6或更早的版本,请使用Apache Commons IO的`IOUtils`代替。

0