I'm trying to create a directory and copy files to it. The code I've implemented and its output is below. The problem seems self explanatory, but I'll make it explicit for those who can't tell.
No matter what I do, I can't seem to create the destination file required to copy the file.
get
is the file to be copied, and dest
is the directory to which it will be copied. Line numbers and "ERR>
" were added for clarity. I've commented out other methods of file creation which I've tried, but they all failed.
115: private void copyTo(File get, File dest)
116: {
117: try
118: {
119: dest = new File((dest.getPath().endsWith(File.separator) ? dest.getPath() : dest.getPath() + File.separator) + get.getName());
120:
121: java.io.FileInputStream fis = new java.io.FileInputStream(get);
122: if (dest.exists())
123: while(!dest.delete());
124: dest.mkdir();
125:// dest.createNewFile();
126:// java.io.FileWriter w = new java.io.FileWriter(dest);
127:// w.write("");
128: System.out.println("Writing \"" + get + "\" to \"" + dest + "\"");
129:ERR> java.io.FileOutputStream fos = new java.io.FileOutputStream(dest);
130: int b;
131: do
132: {
133: b = fis.read();
134: fos.write(b);
135: }while (b != -1);
136: }
137: catch (FileNotFoundException ex)
138: {
139:// System.err.println("404: \"" + get + "\"");
140: ex.printStackTrace();
141: }
142: catch (java.io.IOException ex)
143: {
144:// System.err.println("IO exception on \"" + get + "\"");
145: ex.printStackTrace();
146: }
147: }
Writing "J:\warehouse.txt" to "J:\backup\warehouse.txt"
java.io.FileNotFoundException: J:\backup\warehouse.txt (The system cannot find the path specified)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at copy.TUI.copyTo(TUI.java:129)
at copy.TUI.copy(TUI.java:110)
at copy.TUI.run(TUI.java:102)
at copy.Main.main(Main.java:37)
Use dest.getParentFile().mkdir()
. This will create the parent dir for your dest file. In case multiple parent path elements might be missing you can use the mkdirs()
method to create all missing directories recursively.