2017-03-03 161 views
3

我已经尝试了几种不同的方法来实现这个功能,而且他们都没有。我试图在Java文件夹内创建一个文件。该项目需要有多个文本文件,这些文件都相互关联,并且将它们放在一个文件夹中更易于管理。理想情况下,该文件夹将存储在scr/之外。在src文件夹外创建一个文件夹

这里是我当前的代码为它(我不检查文件是否存在在前):

File testFile = new File("\\appts\\Appointments" + name + ".txt"); 
try { 
    testFile.createNewFile(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

不过,我得到一个IOException当我尝试运行代码。我已经试过它是如何在上面的,也是/appts/Appointments,appts/Appointments,appts\\Appointments。我试着在网上搜索,但找不到任何有用的东西。

编辑:这是我的项目设置目前的样子:

Project_Folder 
    src 
     com 
      weebly 
       roboticplayer 
        appointmentbook 
         CLASSES 

这里是我希望它看起来:

Project_Folder 
    src 
     com 
      weebly 
       roboticplayer 
        appointmentbook 
         CLASSES 
    appts 
+0

什么是异常的完整堆栈跟踪? –

+0

你正在使用哪个操作系统? – smttsp

+0

'java.io.IOException异常:系统无法找到路径specified' '在java.io.WinNTFileSystem.createFileExclusively(本机方法)' '在java.io.File.createNewFile(来源不明)' '在com.weebly.roboticplayer.appointmentbook.AppointmentRunner.main(AppointmentRunner.java:55)' 55行:'testFile.createNewFile();' 操作系统是Windows 10,IDE就是Eclipse – RoboticPlayer

回答

4

有两种简单的方法可以做到这一点:

1)绝对路径

"C:\\users\\....\\parent_folder\\filename.txt"; 

2)相对路径,

. (Single dot) is current directory 
..(double dots) is parent directory 

例如,要在项目文件夹下创建文本文件。以下是您的文件结构。

Project_folder 
    src 
     Java_main_file.java 
    appts 

要从Java_main_file.java

String filename = "..\\appts\\filename.txt" 

创建appts下一个文件。然后,用filename创建文件。这里是一个链接如何create a text file

请注意,您需要确保存在您创建文件的文件夹。如果它不存在,你会得到一个错误。

+0

但我的问题是如何制作文件夹。您告诉我如何将文件放入文件夹中,这很有帮助,但我仍然不知道如何制作文件夹。我试着调用'testFile.mkdir();'但它什么都没做。 – RoboticPlayer

+0

假设你想在'Project_folder'下创建'appts'文件夹。 'new File(“appts \\”)。mkdirs()'将创建文件夹。 – smttsp

+0

编辑过的文章,我希望它看起来如何。它编译和运行良好,一切,但我找不到文件或文件夹。 – RoboticPlayer

0

您不能在一个步骤中创建文件及其不存在的父目录,但可以先用File.mkdirs()创建父目录,然后创建该文件。

0

如果您使用JDK7,则可以使用nio软件包。

Path path = Paths.get("C:\\appts\\Appointments"); 
Files.createDirectories(path); 

如果你想一个相对路径做你的当前文件夹:

FileSystems.getDefault().getPath("appts", "Appointments"); 

如果你想看到的绝对路径:

FileSystems.getDefault().getPath("appts", "Appointments").toAbsolutePath().toString(); 

如果你需要的文件对象:

FileSystems.getDefault().getPath("appts", "Appointments").toFile(); 

你c在调用AbsolutePath()之后也要做.toFile()。

相关问题