在eclipse插件中更新IFile内容

时间:2016-06-10 19:56:29

标签: java eclipse eclipse-plugin

我有一个文件,我想根据一些用户菜单选择更新。 我的代码得到了IFile 如果它不存在则创建(使用用户的内容),如果存在则应更新。 我目前的代码是:

    String userString= "original String"; //This will be set by the user
    byte[] bytes = userString.getBytes();
    InputStream source = new ByteArrayInputStream(bytes);
    try {
        if( !file.exists()){
            file.create(source, IResource.NONE, null);
        }
        else{
            InputStream content = file.getContents();
            //TODO augment content
            file.setContents(content, 1, null);
        }

    } catch (CoreException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        IDE.openEditor(page, file);

我的问题是,即使我获得了原始内容并设置了文件的内容,我在更新时收到一个空文件,即整个内容都被删除。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

评论中此版本的代码适用于我:

InputStream inputStream = file.getContents();

StringWriter writer = new StringWriter();

// Copy to string, use the file's encoding
IOUtils.copy(inputStream, writer, file.getCharset());

// Done with input
inputStream.close();

String theString = writer.toString();

theString = theString + " added";

// Get bytes using the file's encoding
byte[] bytes = theString.getBytes(file.getCharset());

InputStream source = new ByteArrayInputStream(bytes);

file.setContents(source, IResource.FORCE, null);

请注意原始输入流的关闭以及使用file.getCharset()来使用正确的编码。