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ファイルの 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ファイルを開くことができません。

4

2 に答える 2

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 に答える