当前位置: 首页 > 知识库问答 >
问题:

如何使用Java将特定文件添加到特定目录?

岑俊明
2023-03-14

我正在系统上处理一个新函数,现在我需要选择一个文件,并保存在用户C:的文件夹中。这个过程是这样发生的,用户上传一个文件到系统中,这个文件可以是任何东西,文本,图像,除了视频,现在它被保存在系统数据库中,但是我的老板想要改变这个过程,所以我需要保存在用户C:上的一个特定文件夹上,我已经创建了特定文件夹,但是我不知道如何将文件保存在创建的文件夹上。因此上载文件的代码如下所示:

public void uploadArquivo(FileUploadEvent event) {
    byte[] bytes = null;

    try {
        File targetFolder = new File(System.getProperty("java.io.tmpdir"));
        if (!targetFolder.exists()) {
            if (targetFolder.mkdirs()) {
                FacesMessageUtil.novaMensagem("Atenção", "Não foi possível criar pasta temporária!");
                return;
            }
        }

        targetFolder.mkdirs();
        OutputStream out;

        try (InputStream inputStream = event.getFile().getInputstream()) {
            out = new FileOutputStream(new File(targetFolder, event.getFile().getFileName()));
            int read;
            bytes = new byte[10485760];

            while ((read = inputStream.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }

            inputStream.close();
        }
        out.flush();
        out.close();

    } catch (IOException e) {
        e.printStackTrace(System.out);
    }
    AnexoEmpreendimento anexo = new AnexoEmpreendimento();
    anexo.setNomeArquivo(event.getFile().getFileName());
    anexo.setTamanhoArquivo(event.getFile().getSize());
    anexo.setArquivo(bytes);
    anexos.add(anexo);
}

共有1个答案

江温书
2023-03-14

好吧,这取决于你实际拥有什么。web提交表单?那么你有哪一个web框架呢?DB中的一个斑点?你有哪一个DB引擎,你在Java使用哪一个DB框架与之交互,等等。

大多数库都允许您获得InputStreambyte[](如果它们同时提供了这两个,则您需要输入流)。

您可以将inputstream写入文件,或将Byte[]写入文件,如下所示:

import java.nio.file.*;

public class Example {
    static final Path MY_DIR = Paths.get("C:/path/to/your/dir");

    void writeByteArr(byte[] data) throws IOException {
        Path toWrite = MY_DIR.resolve("filename.dat");
        Files.write(toWrite, data);
    }

    void writeInputStream(InputStream data) throws IOException {
        Path toWrite = MY_DIR.resolve("filename.dat");
        try (OutputStream out = Files.newOutputStream(toWrite)) {
            data.transferTo(out);
        }
    }
}

在不太可能的情况下,您“获得”的数据既不是byte[]格式,也不是inputstream格式,您将不得不详细说明数据如何到达您的代码。

 类似资料:
  • 问题内容: 有没有一种方法可以将依赖项从pom.xml文件下载到Java中的指定文件夹?我可以从Java运行maven命令,并收到下载消息,但是我不知道maven将这些库存储在哪里?如何将这些依赖项下载到特定文件夹? 问题答案: 看一下maven的依赖插件,特别是目标。在使用一节介绍了如何做的正是你想要的。 要从命令行执行此操作,只需执行以下操作:

  • 我有一个logger配置,它基本上将根记录器的所有日志写入一个基本日志文件。我总是使用此处。 对于我想记录的一些特定事件,请使用不同的文件。我怎么能在属性文件中配置这样一个记录器(例如给它一个名字,然后我可以从代码中引用)?

  • 问题内容: “安装”目标将工件复制到目标目录和本地存储库。 我如何告诉Maven也将其复制 到给定目录 (例如JBoss的deploy目录)。 问题答案: maven-dependency-plugin 的目标副本可以满足您的要求,请参见示例。 但是,最好不要在目标目录之外(或精确地说)复制任何内容- 尤其是将这种操作附加到构建阶段时,因为它会引入构建的意外副作用,有时甚至会降低可重复性。 正如@

  • 问题内容: 在Java中,是否有任何方法可以从文件中读取特定行?例如,读取第32行或任何其他行号。 问题答案: 除非你以前对文件中的行有一定的了解,否则没有阅读前31行就无法直接访问第32行。 所有语言和所有现代文件系统都是如此。 如此有效地,你只需阅读第32行,直到找到第32行为止。

  • 问题内容: 我有一个文本文件,需要将其打印到特定的网络打印机。我知道打印机的名称。 到目前为止,我已经创建了Printable类来打印文件(票证)。 我这样称呼TicketPrintPage: 它的工作原理还不错,但是: -我的文本不多于一页(找到了一些算法,但是很好) -我不知道打印机何时完成打印,如果我尝试打印两页如果打印机连续打印了多张票证,则会返回“打印机未就绪”消息。 所以问题又来了:没

  • 我一直在尝试应用敏感度标签并使用MIP和MailMessage发送电子邮件。 基于MipSdk-DotNet-Polury-Quickstart项目,我添加了选项元数据和,并将内容格式设置为。 计算操作后,我获得了带有mips_label键和模板 ID 的元数据。使用消息将mips_label添加到邮件。 将它们添加到电子邮件中,但收到标签时不会应用。 可以通过outlook客户端添加标签。我的方