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
ファイルの write メソッドと read メソッドのみを実装するクラスです。
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の新しいインスタンスを開いているため、プロジェクトエクスプローラーでプロジェクトを表示できますが、ローカルではないためconf.txtファイルを開くことができません。