Ich habe eine Datei, die ich basierend auf einigen Benutzer Menüauswahl aktualisieren möchte. Mein Code erhält das IFile , wenn es nicht existiert, wurde es erstellt (mit dem Inhalt des Benutzers), und wenn es existiert, sollte es aktualisiert werden. Mein aktueller Code ist:Update IFile Inhalt in Eclipse-Plugin
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);
Mein Problem ist, dass, obwohl ich den ursprünglichen Inhalt erhalten und stellen Sie den Inhalt der Datei, ich bin eine leere Datei auf Update erhalten, das heißt, der gesamte Inhalt gelöscht wird.
Was mache ich falsch?
Dieser Code setzt den Inhalt der Datei nur auf den vorhandenen Inhalt, wenn die Datei bereits existiert. Ich würde jedoch vermuten, dass dies die Datei möglicherweise abschneidet, weil Sie die Datei gleichzeitig lesen und schreiben. Was möchten Sie eigentlich tun, wenn die Datei bereits existiert? –
Hey. Entschuldigung, wenn mein Beitrag nicht klar war, aber ich habe einen // TODO Augment Inhalt Die Idee, dass basierend auf Benutzereingaben, ich den aktuellen Dateiinhalt erhalten + die Benutzereingabe zum vorhandenen vorhandenen Inhalt hinzufügen, und die Datei mit dem neuen festlegen Inhalt. Da ich keine Synchronisierungsprobleme vermeiden möchte, scheint es, dass der beste Weg ist, den Inhalt zu nehmen, zu ändern und neu zu setzen. Aber wenn ich SetContents setze, bekomme ich eine leere Datei – Quantico
Haben Sie 'content.close()' nach dem Ende gelesen? –