Java – create a directory, if it does not exist, and then create the files in that directory
The condition is that if a directory exists, you must create files in that specific directory and create a new directory
The following code only creates a file with a new directory but not an existing directory For example, the directory name would be like "getdirection"
String PATH = "/remote/dir/server/"; String fileName = PATH.append(id).concat(getTimeStamp()).append(".txt"); String directoryName = PATH.append(this.getClassName()); File file = new File(String.valueOf(fileName)); File directory = new File(String.valueOf(directoryName)); if(!directory.exists()){ directory.mkdir(); if(!file.exists() && !checkEnoughDiskSpace()){ file.getParentFile().mkdir(); file.createNewFile(); } } FileWriter fw = new FileWriter(file.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); bw.write(value); bw.close();
Solution
This code first checks the existence of the directory, if not, creates it, and then creates the file Note that I can't verify some method calls because I don't have complete code, so I assume that calling gettimestamp () and getclassname () works You should also be using any Java io. * Class - the function you write to the file should throw this exception (and handle it elsewhere), or you should directly in the method In addition, I think id is a string type - I didn't know your code didn't explicitly define it If it is something like int, you should convert it to a string before using it in the file name, as I did here
In addition, I replaced your append phone with concat or as I think appropriate
public void writeFile(String value){ String PATH = "/remote/dir/server/"; String directoryName = PATH.concat(this.getClassName()); String fileName = id + getTimeStamp() + ".txt"; File directory = new File(directoryName); if (! directory.exists()){ directory.mkdir(); // If you require it to make the entire directory path including parents,// use directory.mkdirs(); here instead. } File file = new File(directoryName + "/" + fileName); try{ FileWriter fw = new FileWriter(file.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); bw.write(value); bw.close(); } catch (IOException e){ e.printStackTrace(); System.exit(-1); } }
If you want to run code on Microsoft Windows, you should not use a bare path name like this - I don't know how it will be handled / in a file name For complete portability, you should use something like file Separator to build the path
Edit: according to the comments of josefscript below, it is not necessary to test the existence of the directory If you create a directory, directory The mkdir() call will return true and false, including the case where the directory already exists