如何在Java中的目录中创build一个文件?
如果我想在C:/a/b/test.txt
创build一个文件,我可以这样做:
File f = new File("C:/a/b/test.txt");
另外,我想使用FileOutputStream
来创build文件。 那么我该怎么做呢? 出于某种原因,该文件不会在正确的目录中创build。
最好的办法是:
String path = "C:" + File.separator + "hello" + File.separator + "hi.txt"; // Use relative path for Unix systems File f = new File(path); f.getParentFile().mkdirs(); f.createNewFile();
在写之前,你需要确保父目录存在。 你可以通过File#mkdirs()
来做到这一点。
File f = new File("C:/a/b/test.txt"); f.getParentFile().mkdirs(); // ...
使用Java 7 ,您可以使用Path
, Paths
和Files
:
import java.io.IOException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class CreateFile { public static void main(String[] args) throws IOException { Path path = Paths.get("/tmp/foo/bar.txt"); Files.createDirectories(path.getParent()); try { Files.createFile(path); } catch (FileAlreadyExistsException e) { System.err.println("already exists: " + e.getMessage()); } } }
使用:
File f = new File("C:\\a\\b\\test.txt"); f.mkdirs(); f.createNewFile();
注意我在Windows文件系统中将正斜杠改为双斜杠。 这将在给定的path上创build一个空文件。
String path = "C:"+File.separator+"hello"; String fname= path+File.separator+"abc.txt"; File f = new File(path); File f1 = new File(fname); f.mkdirs() ; try { f1.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
这应该在目录中创build一个新的文件
在指定path中创build新文件
import java.io.File; import java.io.IOException; public class CreateNewFile { public static void main(String[] args) { try { File file = new File("d:/sampleFile.txt"); if(file.createNewFile()) System.out.println("File creation successfull"); else System.out.println("Error while creating File, file already exists in specified path"); } catch(IOException io) { io.printStackTrace(); } } }
节目输出:
文件创build成功
一个更好,更简单的方法来做到这一点:
File f = new File("C:/a/b/test.txt"); if(!f.exists()){ f.createNewFile(); }
资源