Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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 如何将Yaml对象转储到文件中?_Java_File Io_Yaml_Snakeyaml - Fatal编程技术网

Java 如何将Yaml对象转储到文件中?

Java 如何将Yaml对象转储到文件中?,java,file-io,yaml,snakeyaml,Java,File Io,Yaml,Snakeyaml,我有一个简单的java程序,它使用snakeyaml读取yaml文件,并且我编辑了yaml对象的一些值。但我无法将对象转储回yaml文件。不确定将yaml对象转储到文件的正确方式 这是密码 InputStream input = new FileInputStream(new File("/etc/cassandra/cassandra.yaml")); Writer output = null; try { output

我有一个简单的java程序,它使用snakeyaml读取yaml文件,并且我编辑了yaml对象的一些值。但我无法将对象转储回yaml文件。不确定将yaml对象转储到文件的正确方式

这是密码

       InputStream input = new FileInputStream(new File("/etc/cassandra/cassandra.yaml")); 
        Writer output = null;
        try {
            output = new FileWriter("/etc/cassandra/cassandra.yaml");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Yaml yaml = new Yaml();
        Map<String, Object> data = (Map<String, Object>) yaml.load(input);
        System.out.println("yaml data is " +data.get("saved_caches_directory"));
        data.put("saved_caches_directory", "/var/lib/cassandra/saved_new_caches");
        yaml.dump(data, output);
        System.out.println(output.toString());
        output.write(data);  // Error in this line.

    }
InputStream input=newfileinputstream(新文件(“/etc/cassandra/cassandra.yaml”);
写入器输出=空;
试一试{
output=newfilewriter(“/etc/cassandra/cassandra.yaml”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Yaml Yaml=新的Yaml();
映射数据=(映射)yaml.load(输入);
System.out.println(“yaml数据是”+data.get(“保存的缓存目录”);
data.put(“保存的缓存目录”,“/var/lib/cassandra/saved的新缓存”);
yaml.dump(数据、输出);
System.out.println(output.toString());
输出。写入(数据);//这行有错误。
}
我需要yaml.dump()将修改后的yaml对象转储回文件。我不知道那里是怎么写的。根据EclipseYAML.dump(数据,输出);方法在输出为writer对象时可用。我不知道如何实例化write对象以将其发送回文件。

创建Writer

Writer writer = new FileWriter("/etc/cassandra/cassandra.yaml");
将数据转储到写入程序

yaml.dump(data, writer);
完成后关闭编写器

writer.close();

我以前也试过。我想我发现了我的问题。我的输入流和输出写入程序一个接一个地初始化。由于某种原因,它截断了我的文件,所以没有可读取的内容@Rahul同意,在写并关闭文件之前,不要打开文件进行阅读。