2010-04-15 6 views
2

Si j'ai un handle dans un fichier, comment créer un document et y écrire? En ce moment, j'ai supprimer le fichier complètement et de recréer avec du nouveau contenu comme indiqué ci-dessous:Comment écrire dans un fichier dans eclipse?

IFile file = getFile(); 
file.delete(); 
file.create(input, false, null); 

EDIT: Ceci est un plugin Eclipse, pas un programme java régulier.

Répondre

0

trouvé la réponse ici: http://old.nabble.com/how-to-get-the-IDocument-of-an-ITextFileBuffer-created-from-an-IFile--td19222160.html

dû modifier un peu pour répondre à mes besoins:

FileEditorInput editorInput = new FileEditorInput(file); 
IWorkbench wb = PlatformUI.getWorkbench(); 
IWorkbenchPage page = wb.getActiveWorkbenchWindow().getActivePage(); 
IEditorDescriptor desc = wb.getEditorRegistry().getDefaultEditor(file.getName()); 
IEditorPart editor = (IEditorPart)page.openEditor(editorInput, desc.getId()); 
ITextEditor textEditor = (ITextEditor) editor.getAdapter(ITextEditor.class); 
IDocumentProvider documentProvider = textEditor.getDocumentProvider(); 
IDocument document = documentProvider.getDocument(editorInput); 
document.replace(position, 0, content); 
1

Cela se produit parce que vous essayez de lire un fichier qui n'existe pas. Donc, en obtenant le fichier et en le fermant, vous créez réellement le fichier.

+0

Bonne réponse, mais comment écrire à un endroit précis? – fastcodejava

+0

J'imagine que "entrée" est le nom du fichier. Donc disons que j'ai ce fichier dans le lecteur C (En supposant que vos fenêtres en cours d'exécution). Je suppose également que "input" est une chaîne. Alors faites comme suit; Chaîne n = "C: /" + entrée; La chaîne finira par ressembler à ceci: C: \ file_name – flopex

1

l'interface IFile semble avoir quelques méthodes qui vous permettront d'écrire un contenu:

/** 
* Appends the entire contents of the given stream to this file. 
* ... 
*/ 
public void appendContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException; 
+0

Bonne réponse, mais comment écrire à un endroit spécifique? – fastcodejava

Questions connexes