在下面的代码中,我正在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();
答案 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);
}