首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在JSF和PrimeFaces中上传和读取文本文件?

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

Stack Overflow用户
提问于 2013-09-04 09:18:49
回答 3查看 11.3K关注 0票数 0

我需要上传和阅读一个文本文件与PrimeFaces和JSF。我的问题是,当我上传文本文件时,它存储在哪里?

这是我的.xhtml文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<p:fileUpload value="#{send.file }" mode="simple" />
</h:form>
<p:commandButton actionListener="#{send.upload}"  value="Send" ajax="false" />

和Java类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Send {
    private UploadedFile file;

    public void upload() {
        if (file != null) {
            FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
}

我还找到了这个读取文件的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReaderExample {

    public static void main(String[] args) {

        try (BufferedReader br = new BufferedReader(new FileReader("C:\\testing.txt")))
        {
            String sCurrentLine;

            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我的另一个问题是,在本例中,"C:\\testing.txt"是作为路径给出的吗?我必须提供哪个地址才能读取我上传的文件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-04 13:21:32

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

这实际上不关您的事,您不应该在JSF支持bean代码中对此感兴趣。它存储(部分)在内存中,和/或(部分)存储在服务器的临时存储位置,该位置将被定期擦除/清理。它绝对不是作为永久存储位置的意图。您应该在action/listener方法中只读取上传的文件内容,并将其存储在您选择的永久存储位置。

例如。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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());
        // Add success message here.
    }
}

请注意,FilenameUtils是Apache Commons IO的一部分,您应该已经安装了它,因为它是<p:fileUpload>的必需依赖项。还请注意,在上面的示例中,File#createTempFile()并不完全生成一个临时文件,但它只是用来生成一个唯一的文件名。否则,当其他人偶然上传与现有文件名称完全相同的文件时,该文件将被覆盖。还要注意,Files#write()是Java7的一部分。如果您仍在使用Java6或更早的版本,请使用Apache Commons IO IOUtils

票数 4
EN

Stack Overflow用户

发布于 2013-09-04 09:26:05

请看看这个与同一问题相关的帖子:how to upload file to http remote server using java?

如果对你没有帮助,请让我知道,我会通过的。;)

票数 0
EN

Stack Overflow用户

发布于 2018-06-15 17:17:27

我是这样修改文件的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18609906

复制
相关文章
python 删除文件中的空行
res = [x for x in res if x.split()] #将空行从 res 中去掉
全栈程序员站长
2022/09/02
3.5K0
sed 删除命令
删除/etc/passwd中的不能登录的用户(筛选条件:/sbin/nologin)
用户1217611
2022/05/06
1.3K0
sed 删除命令
Excel技巧:快速删除表中的空行
有时候,表中可能存在空行,如果我们需要删除表中的这些空行,如何快速操作呢?特别是包含大量数据的大表。为演示起见,下面的示例表数据较少。
fanjy
2023/02/24
2.8K0
Excel技巧:快速删除表中的空行
Linux sed 命令的使用
首先,就昨晚的发的消息道歉,虽然整蛊大家了,但是我还是挺开心的。 sed是一种流编辑器,配合正则表达式使用,sed处理文件之时,把当前处理的文保存在缓冲区,sed命令处理缓冲区的内容,将缓冲区的内容显示在到屏幕上,sed能够对一些重复操作的动作进行简化。 先来了解一下sed的命令格式 sed [options] 'command' filesname sed [options] -f scriptfilename filesname sed的命令 a \ 在当前行下面插入文本 i \ 在当前行
赵腰静
2018/03/09
3.2K0
Sed命令的基本使用
该文介绍了sed命令的基本使用,包括打印匹配行、替换匹配行、从文件中读取并写入到输出中等常用用法,以及使用修饰符进行更高级的文本处理。同时还介绍了sed命令的常用选项和例子,以及与其他文本处理工具的对比。
GavinZhou
2018/01/02
1.2K0
Excel去除空行的各种方法_批量删除所有空行
大家好,又见面了,我是你们的朋友全栈君。 本文转载至:https://baijiahao.baidu.com/s?id=1590204478648348952&wfr=spider&for=pc,
全栈程序员站长
2022/09/20
5.7K0
Excel去除空行的各种方法_批量删除所有空行
使用lsof命令恢复已删除文件(正在使用的文件)
此方法适用于正在使用的文件 ,且被删除后,可以通过lsof的方式进行恢复。 演示:
互联网-小阿宇
2022/11/21
1.8K0
使用lsof命令恢复已删除文件(正在使用的文件)
python 实现类似sed命令的文件内
#!/usr/bin/env python     #_*_coding:utf-8 _*_     #replace()方法把字符串中的 old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换不超过 max 次。     #语法:str.replace(old, new[, max])     import sys,os     old_text, new_text, file_name = sys.argv[1], sys.argv[2], sys.argv[3]     f = 
py3study
2020/01/10
1.1K0
linux sed命令使用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/77985202
bear_fish
2018/09/14
4.9K0
linux sed命令使用
linux sed命令使用
sed是一款常用的文本处理工具,其名称来自于“stream editor”(流编辑器)。sed能够从标准输入或文件中读取文本,对文本进行编辑和转换,然后将结果输出到标准输出或指定的文件中。在Linux系统中,sed命令是一种非常强大和灵活的工具,可以帮助用户进行多种文本操作,如文本替换、删除、插入、打印等等。
堕落飞鸟
2023/03/27
3.8K0
Python去除文本文件中的空行
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
村雨遥
2019/09/09
4.2K0
Python 去除文本文件中的空行
功能 读取存在空行的文件,删除其中的空行,并将其保存到新的文件中; 代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/3/18 21:41 # @Author : cunyu # @Site : cunyu1943.github.io # @File : deleteBlankLines.py # @Software: PyCharm """ 读取存在空行的文件,删除其中的空行,并将其保存到新的文件中 """
村雨遥
2022/06/15
1.6K0
Linux中sed工具的使用
sed 是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
谢公子
2022/01/19
2.3K0
Linux中sed工具的使用
如何使用 sed 替换文件中的字符串?
在 Linux 系统中,sed 是一个非常有用的文本处理工具,它可以用于在文件中进行字符串替换操作。sed 是流编辑器(stream editor)的缩写,它可以对文本进行逐行处理,包括查找和替换特定的字符串。本文将详细介绍如何使用 sed 命令在文件中进行字符串替换操作。
网络技术联盟站
2023/06/09
5.5K0
如何使用 sed 替换文件中的字符串?
Linux的sed命令
Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处理、编辑文本文件。Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
狼啸风云
2019/11/05
4.1K0
linux中sed命令总结
原文:https://wangchujiang.com/linux-command/c/sed.html
入门笔记
2022/06/02
3.3K0
linux下的删除文件命令,Linux下删除文件命令「建议收藏」
在linux中删除文件与文件夹我们可以直接使用rm就可以删除了,彻底删除文件或文件夹我们可以使用shred命令来完成,接下来是小编为大家收集的Linux下删除文件命令,希望能帮到大家。
全栈程序员站长
2022/09/17
49.8K0
linux下的删除文件命令,Linux下删除文件命令「建议收藏」
Linux批量替换某种类型文件中的字符串-sed和grep命令使用
今天在修改rpm打包的spec配置文件时,遇到一个问题就是:需要将100个左右源代码中的spec配置文件中的Release一行中的发布版本号使用宏变量%{_release}进行替换。
ccf19881030
2019/04/23
5.8K0
点击加载更多

相似问题

使用sed删除文件中的空行

20

使用一个sed命令,使用sed +删除"#“和空行

63

使用sed删除空行

1716

如何使用SED删除多个空行?

60

无法使用sed regex删除空行

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文