Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保存EMF模型_Java_Emf - Fatal编程技术网

Java 保存EMF模型

Java 保存EMF模型,java,emf,Java,Emf,我是EMF新手,尝试保存EMF模型,如下所示:- public void saveData(File file, Device device) throws IOException { final ResourceSet resourceSet = new ResourceSetImpl(); // Use XMI resource System.out.println("file path in saveData " +file.get

我是EMF新手,尝试保存EMF模型,如下所示:-

public void saveData(File file, Device device) throws IOException {  

        final ResourceSet resourceSet = new ResourceSetImpl();

        // Use XMI resource
        System.out.println("file path in  saveData " +file.getPath());          
        Resource xmiResource = resourceSet.createResource(URI.createFileURI(file.getPath() + ".xmi"));
        xmiResource.getContents().add(device);
        xmiResource.save(null);

        // Use XML resource instead
        Resource xmlResource = resourceSet.createResource(URI.createFileURI(file.getPath() + ".xml"));
        xmlResource.getContents().add(device);
        xmlResource.save(null);

        }
但在指定路径中未创建任何文件。装载代码为:-

public Device loadData(String fileName) {


        final ResourceSet resourceSet = new ResourceSetImpl();


            // Use XMI resource

            Resource xmiResource;
            System.out.println("filename" + fileName);
            try {
            xmiResource = resourceSet.getResource(URI.createFileURI(fileName + ".xmi"),true);

                xmiResource.load(null);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return null;
            }
            return (Device)xmiResource.getContents().get(0);

        }
这会产生以下错误:
java.lang.RuntimeException:无法为“file:/C:/Users/Desktop/filename.xmi”创建资源;需要注册的资源工厂

使用XMiResourceImpl。它目前运行良好

XMIResourceImpl resource = new XMIResourceImpl();
 File source = new File(fileName);
 resource.load( new FileInputStream(source), new HashMap<Object,Object>());
 Data data = (Data)resource.getContents().get(0);
XMIResourceImpl resource=new XMIResourceImpl();
文件源=新文件(文件名);
load(新的FileInputStream(source),新的HashMap());
Data Data=(数据)resource.getContents().get(0);
用于保存模型

Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
Map<String, Object> m = reg.getExtensionToFactoryMap();
m.put("key", new XMIResourceFactoryImpl());
ResourceSet resSet = new ResourceSetImpl();
Resource resource = resSet.createResource(URI.createFileURI(fileName));
resource.getContents().add(data);
resource.save(Collections.EMPTY_MAP);
Resource.Factory.Registry reg=Resource.Factory.Registry.INSTANCE;
Map m=reg.getExtensionFactoryMap();
m、 put(“key”,新的XMIResourceFactoryImpl());
ResourceSet RESET=新的ResourceSetImpl();
Resource-Resource=reset.createResource(URI.createFileURI(fileName));
resource.getContents().add(数据);
resource.save(Collections.EMPTY_MAP);

这听起来像是您的问题:。如果它能帮助其他人解决同样的问题,你可以试着写下你自己的答案。