临时目录创建

时间:2019-04-02 15:42:56

标签: java filewriter

在下面的代码中,我正在RHEL服务器上已创建的目录中写入名为employee_status_downloader_unixtimestamp.csv的文件,如下面的代码行所示:

FileWriter fw = new FileWriter("/srv/file_users/JACK/employee_status_downloader_"+unixTimestamp+".csv");

因此,我手动创建了一个名为JACK的文件夹,然后指定了上述路径,以便与userName JACK相关的文件位于JACK文件夹中。

由于userName可以不同,并且我已经在代码userName的代码行sendMessage中获得了String userName = parts[1].trim();,如下所示,我想知道是否我可以利用这个     创建基于userName的目录?

因此,我在这里没有使用System.getProperty("user.name");,因为在我的方法中已经获得userName了,我相信上面的方法足以创建临时目录。

上网查看后,我发现人们suggesting here(Bozho's answer)正在做这样的事情:

File fl = new File("/path/directory").mkdirs();,其中directory是我要创建/存在的目录的名称。但是由于我在上面使用FileWriter,所以我想知道应该如何同时使用两者 如果该目录不存在,我还可以创建一个目录,然后在该目录中写入文件。

public void sendMessage(String msg) throws DaoException {

        String[] parts = msg.split("#");
        String requestID = parts[0].trim();
        String userName = parts[1].trim();
        String applicationName = parts[2].trim();

        logger.info("Request ID " + requestID);
        logger.info("User Name " + userName);
        logger.info("Application Name " + applicationName);



        try {


            FileWriter fw = new FileWriter("/srv/file_users/JACK/employee_status_downloader_" + unixTimestamp + ".csv");

            CSVWriter writer = new CSVWriter(fw);

            writer.writeAll(rsDemo, true);
            writer.close();
            fw.close();


        } catch (Throwable th) {
            throw new DaoException(th.getMessage(), th);
        } finally {


        }



    }
    long unixTimestamp = Instant.now().getEpochSecond();

2 个答案:

答案 0 :(得分:0)

无论对String中的路径执行什么操作,都可以通过参数化String以参数化的方式进行。你有这个:

String userName = parts[1].trim();
...
FileWriter fw = new FileWriter("/srv/file_users/JACK/employee_status_downloader_" + unixTimestamp + ".csv");

所以您可以这样做:

String userName = parts[1].trim();
...
FileWriter fw = new FileWriter("/srv/file_users/" + userName + "/employee_status_downloader_" + unixTimestamp + ".csv");

答案 1 :(得分:0)

如果要确保文件夹存在,请将代码更改为:

File dir = new File("/srv/file_users/", userName);
dir.mkdirs();
FileWriter fw = new FileWriter(new File(dir, "/employee_status_downloader_" + unixTimestamp + ".csv"));

更好的是,使用更新的NIO方法并使用try-with-resources确保文件正确关闭。

Path dir = Paths.get("/srv/file_users", userName);
Files.createDirectories(dir);

Path file = dir.resolve("employee_status_downloader_" + unixTimestamp + ".csv");
try (CSVWriter writer = new CSVWriter(Files.newBufferedWriter(file))) {
    writer.writeAll(rsDemo, true);
}