我有一个文件,我想根据一些用户菜单选择更新。 我的代码得到了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);
我的问题是,即使我获得了原始内容并设置了文件的内容,我在更新时收到一个空文件,即整个内容都被删除。
我做错了什么?
答案 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()
来使用正确的编码。