【问题标题】:How to fetch and store attachments from the specified location to a file system?如何从指定位置获取附件并将​​其存储到文件系统?
【发布时间】:2014-05-19 14:37:28
【问题描述】:

我正在编写一个 java 代码来检索从指定位置到文件系统的附件。 附件信息存储到数据库表列中,像这样

Number        attachment_url                                                     
-----------  -----------------------------------------------------------------  
SAT-3        C:\test_attachments\SAT\SAT-368\thumbs\_thumb_63650.png  
SAT-10       C:\test_attachments\SAT\thumbs\_ts63650.xls
SAT-89       C:\test_attachments\SAT\thumbs\mydoc.pdf

文件扩展名可以是任意的。

我能够获取附件 url 并且还能够创建一个文件夹。但是如何将附件写入特定文件夹?

File files = new File("E:\\Directory1\\" + m_Number);
            if (!files.exists()) {
                if (files.mkdirs()) {
                    System.out.println("Multiple directories are created!");
                    if (files.exists()) {
                        System.out.println("Directory exists");
                        if (files.canWrite()) {
                            Blob blob = resultSet.getBlob("att_url");


                        } else {
                            System.out.println("Access denied !!!");
                        }
                    }
                } else {
                    System.out.println("Failed to create multiple directories!");
                }

我怎样才能做到这一点

【问题讨论】:

  • 下面的代码给出了 FileAleadyExists 异常

标签: java mysql sql-server file-io


【解决方案1】:

附件网址似乎不是 BLOB。我认为这是一个字符串。所以只需获取字符串并创建一个 File 对象。如果文件存在,您可以将其复制到您的文件夹中。

File files = new File("E:\\Directory1\\" + m_jiraNumber);
    if (!files.exists()) {
        if (files.mkdirs()) {
            System.out.println("Multiple directories are created!");
            if (files.exists()) {
                System.out.println("Directory exists");
                if (files.canWrite()) {
                    String attachment = resultSet.getString("attachment_url").replace("\\", File.separator);
                    Path sourcePath = Paths.get(attachment);
                    Path destPath = Paths.get(files.getAbsolutePath() + File.separator + sourcePath.getFileName().toString());
                    Files.copy(sourcePath, destPath);
                } else {
                    System.out.println("Access denied !!!");
                }
            }
        } else {
            System.out.println("Failed to create multiple directories!");
        }
    }

【讨论】:

  • ,感谢您的快速响应。我尝试复制文件,但文件夹显示为空。我提到了stackoverflow.com/questions/106770/…链接
  • 所以例如以下文件不存在? C:\test_attachments\SAT\SAT-368\thumbs_thumb_63650.png
  • 你能举例说明如何复制吗?
  • 文件存在但文件夹仍为空
  • 再次编辑了答案。输出文件名是您的目录 + jira 编号。现在它会将文件放入该目录并为其赋予原始名称。
猜你喜欢
  • 2011-02-18
  • 2014-09-26
  • 1970-01-01
  • 2018-11-05
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
相关资源
最近更新 更多