临时目录创建
Ad-hoc directory creation
在下面的代码中,我在 RHEL 服务器上已创建的目录中写入一个名为 employee_status_downloader_unixtimestamp.csv
的文件,如下面的代码行所示:
FileWriter fw = new FileWriter("/srv/file_users/JACK/employee_status_downloader_"+unixTimestamp+".csv");
所以,我手动创建了一个名为JACK
的文件夹,然后指定了上面的路径,这样userName
JACK
相关的文件就在JACK
文件夹里面了。
因为 userName
可以不同,而且我已经在我的方法 sendMessage
中得到了 userName
,如下面这行代码 String userName = parts[1].trim();
所示,我想知道我是否可以利用这个
根据 userName
?
创建目录
所以,我在这里没有使用 System.getProperty("user.name");
,因为我已经在上面的方法中得到了 userName
,我相信这足以创建一个临时目录。
在网上看了之后,我发现人们 suggesting here(Bozho's answer) 会做这样的事情:
File fl = new File("/path/directory").mkdirs();
其中 directory 是我想要 create/exist 的目录名称。但是由于我在上面使用 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();
无论您对字符串中的路径做什么,都可以通过参数化字符串以参数化的方式进行。你有这个:
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");
如果您想确保该文件夹存在,请将代码更改为:
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);
}
在下面的代码中,我在 RHEL 服务器上已创建的目录中写入一个名为 employee_status_downloader_unixtimestamp.csv
的文件,如下面的代码行所示:
FileWriter fw = new FileWriter("/srv/file_users/JACK/employee_status_downloader_"+unixTimestamp+".csv");
所以,我手动创建了一个名为JACK
的文件夹,然后指定了上面的路径,这样userName
JACK
相关的文件就在JACK
文件夹里面了。
因为 userName
可以不同,而且我已经在我的方法 sendMessage
中得到了 userName
,如下面这行代码 String userName = parts[1].trim();
所示,我想知道我是否可以利用这个
根据 userName
?
所以,我在这里没有使用 System.getProperty("user.name");
,因为我已经在上面的方法中得到了 userName
,我相信这足以创建一个临时目录。
在网上看了之后,我发现人们 suggesting here(Bozho's answer) 会做这样的事情:
File fl = new File("/path/directory").mkdirs();
其中 directory 是我想要 create/exist 的目录名称。但是由于我在上面使用 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();
无论您对字符串中的路径做什么,都可以通过参数化字符串以参数化的方式进行。你有这个:
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");
如果您想确保该文件夹存在,请将代码更改为:
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);
}