我遇到的问题是,我在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文件,因为它不是本地的。
答案 0 :(得分:0)
看起来你的资源是/ProjectE1/conf.txt的绝对路径,我很困惑你为什么不使用java.io。
这可以帮助您了解相对路径,我想这可能是您想要放置配置文件的地方。
File file = new File("conf.txt");
if(!file.createNewFile()){
//err
}
System.out.println(file.getAbsolutePath());
答案 1 :(得分:0)
我有类似的问题。这是我修复的方式。
重新加载文件
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");