我有一个返回TreeMap并尝试将该TreeMap中的内容写入文件的方法。在Linux中,我试图在目录中创建一个新文件:/home/sid/AutoFile/
,并将当前日期附加到文件名。
这就是我提出的:
public void createReconFile() throws SQLException, IOException {
Map<String, String> fileInput = new TreeMap<String, String>();
fileInput = getDiffTableCount();
Set<String> countKeys = fileInput.keySet();
Iterator<String> fileInpIter = countKeys.iterator();
Writer output = null;
//creating a file with currentDate
DateFormat df = new SimpleDateFormat("MM/dd/yyyy:HH:mm:ss");
Date today = Calendar.getInstance().getTime();
String reportDate = df.format(today);
System.out.println(reportDate);
try {
File file = new File("/home/sid/AutoFile/" + "count" + reportDate);
output = new BufferedWriter(new FileWriter(file));
System.out.println("Created new file");
while(fileInpIter.hasNext()) {
String tableName = fileInpIter.next();
String cdp = fileInput.get(tableName);
output.write(tableName +" " + cdp+"\n");
}
} catch(IOException e) {
System.out.println("File Writing failed");
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
} finally {
System.out.println("Closing the file...");
output.close();
}
}
但它以例外结束:
03/23/2018:05:35:30
File Writing failed
java.io.FileNotFoundException: /home/sid/AutoFile/count03/23/2018:05:35:30 (No such file or directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
dir:/home/sid/AutoFile/count03/23/2018:05:35:30
已经存在,我每次调用该方法时都会尝试创建一个新文件。
谁能让我知道我在这里做的错误是什么?如何使用java正确创建文件。
答案 0 :(得分:4)
linux中的文件名不能有正斜杠。所以你认为你希望用作文件名的日期格式被linux作为目录。您需要更改日期格式,以使其中没有任何正斜杠,或者您可以使用以下行首先创建目录,然后将该文件写入该目录。
新文件(&#34; / home / ist /&#34; +&#34; count03 / 23&#34;)。mkdirs();
此外,如果您已经有一个目录/ home / sid / AutoFile / count03 / 23/2018:05:35:30,那么您在linux中的同一位置就不能拥有同名文件。