1

我有一个问题,我在 Java 程序中创建了一个新文件,但是当我尝试在 Eclipse 项目资源管理器视图中打开它时,我总是遇到一个异常,即新创建的文件不是本地文件。我创建它的代码如下:

IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
IProject project = workspaceRoot.getProject(projectName);

FileUtil myFile = new FileUtil();

if (!project.getFile(FILE_NAME).exists()) {

    IFile newFile = project.getFile("conf.txt");
    FileInputStream fileStream = null;
    try {
        String temp = project + "/conf.txt";
        temp = temp.substring(2);
        fileStream = new FileInputStream(temp);
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
      try {
        newFile.create(fileStream, false, null);
    } catch (CoreException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
      // create closes the file stream, so no worries. 

    try {
        myFile.writeTextFile(FILE_NAME, "Seconds", output);
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}

FileUtil是一个仅实现文件的写入和读取方法的类。

Exception我尝试打开它时得到的开头是:

org.eclipse.core.internal.resources.ResourceException: Resource '/ProjectE1/conf.txt' is not local.
at org.eclipse.core.internal.resources.Resource.checkLocal(Resource.java:353)
at org.eclipse.core.internal.resources.File.getContentDescription(File.java:264)
at org.eclipse.core.internal.propertytester.FilePropertyTester.testContentType(FilePropertyTester.java:108)

我必须在运行时以某种方式获得相对路径。因为我在程序中打开了一个新的eclipse实例,所以我可以在Project Explorer中看到Project,但无法打开conf.txt文件,因为它不是本地的。

4

2 回答 2

0

我有类似的问题。这就是我修复的方式。

  1. 在本地文件系统中创建的第一个文件(使用 java.io)
  2. 是否刷新了项目
  3. 重新加载文件

            File file = new File(project.getWorkspace().getRoot().getLocation() + project.getFullPath().toString() + "/relative_path_of_my_file");
            file.createNewFile();
            project.refreshLocal(IProject.DEPTH_INFINITE, null);
            keywordFile = project.getFile("/relative_path_of_my_file");
    
于 2013-11-07T19:43:45.537 回答
0

看起来您的资源是 /ProjectE1/conf.txt 的绝对路径,我很困惑为什么您不使用 java.io。

这将帮助您了解相对路径,我认为这可能是您想要放置 conf 文件的位置。

File file = new File("conf.txt");
if(!file.createNewFile()){
    //err
}
System.out.println(file.getAbsolutePath());
于 2013-08-12T20:42:20.137 回答