Copy file from PsiFile

Hi

 

I want to create a file on disk from an URL but I have an exception thrown, the method copyFileFrom tell me the file is non-physical and I don't know how to create a file from a resource. Can you tell me how to write that file please?

package fr.florent.idea.zendgenerator.action.NewGroup;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.LangDataKeys;
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.util.ResourceUtil;
import com.jetbrains.php.lang.PhpFileType;
import fr.florent.idea.zendgenerator.action.AbstractDumbAwareAction;
import icons.PhpIcons;
import org.jetbrains.annotations.NotNull;

import java.net.URL;

public class CreateQueryAction extends AbstractDumbAwareAction {

public CreateQueryAction() {
super("Query", "Create query", PhpIcons.Php_icon);
}

@Override
public void actionPerformed(@NotNull AnActionEvent e) {
URL url = ResourceUtil.getResource(getClass(), "templates", "query.php");
VirtualFile virtualFile = VfsUtil.findFileByURL(url);

PsiFile file = PsiFileFactory.getInstance(e.getProject()).createFileFromText(
virtualFile.getPath(),
PhpFileType.INSTANCE,
LoadTextUtil.loadText(virtualFile)
);

PsiDirectory directory = LangDataKeys.IDE_VIEW.getData(e.getDataContext()).getOrChooseDirectory();


directory.copyFileFrom("query.php", file); // com.intellij.util.IncorrectOperationException: Cannot copy non-physical file: PHP file

System.out.println("Create query");
}
}
0

Please sign in to leave a comment.