[Résolu][Basic]Utilisation de Stream en mode Append.

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Thanauser
Fraîchement OOthentifié
Messages : 3
Inscription : 20 sept. 2022 07:32

[Résolu][Basic]Utilisation de Stream en mode Append.

Message par Thanauser »

Bonjour,
Pour écrire dans des fichiers au format UTF-8, j'utilise les 'streams' de la façon suivante :

Code : Tout sélectionner

	GlobalScope.BasicLibraries.loadLibrary("Tools")
	FileDirectory = Tools.Strings.DirectoryNameoutofPath(document.getURL(), "/")
	MyFile = FileDirectory & "/MyFile.txt"

	fileaccess = createUnoService ("com.sun.star.ucb.SimpleFileAccess")
	outtextstream = createUnoService ("com.sun.star.io.TextOutputStream")
	out = fileaccess.openFileWrite(MyFile)
	encoding = "UTF-8"
	outtextstream.setEncoding(encoding)
	outtextstream.setOutputStream(out)
Et j'écris avec l'instruction write :

Code : Tout sélectionner

outtextstream.writeString("bla bla")
ça fonctionne parfaitement, mais je n'ai pas trouvé comment écrire en fin de fichier, ça écrit (écrase) toujours au début le contenu du fichier. Je cherche donc à ouvrir un stream en mode "Append" similaire à :

Code : Tout sélectionner

Open MyFile For Append access write as #1
Ou à pointer à la fin du stream avec une méthode Seek ou autre.

Je ne vois pas de raison particulière à utiliser les streams (dont je n'ai pas saisi l'intérêt par rapport à l'autre méthode), mais vu que je n'arrive pas non plus à formater correctement via Open MyFile.

Donc les questions (j'aurais dû commencer par ça :? ) :
- Comment ouvrir un stream en mode append ?
- Ou Comment pointer sur la fin d'un stream (si ça a du sens de parler de fin de stream) ?
- Ou Comment écrire en UTF-8 dans un fichier texte via print ou write ?

Merci d'avance !
Dernière modification par Thanauser le 20 sept. 2022 13:43, modifié 1 fois.
Libre Office 7.4.1 sous Windows 10
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: [Basic]Utilisation de Stream en mode Append.

Message par Jurassic Pork »

Hello,
si tu utilises LibreOffice, depuis la version 7.2 il y a la bibliothèque ScriptForge qui est disponible et elle a en particulier des services pour gérer les fichiers.
Exemple d'utilisation :

Code : Tout sélectionner

Sub TestFicUTF8()
GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Dim FSO As Variant
Dim myFile As Object
FSO = CreateScriptService("FileSystem")
FSO.FileNaming = "SYS"
Set myFile = FSO.OpenTextFile("D:\Temp\MonFichier.txt", FSO.ForWriting,True,"UTF-8")
myFile.Writeline("Première partie")
myFile.CloseFile()
Set myFile = FSO.OpenTextFile("D:\Temp\MonFichier.txt", FSO.ForAppending)
myFile.Writeline("Deuxième partie")
myFile.CloseFile()
End Sub
Résultat :
Monfichier.PNG
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Thanauser
Fraîchement OOthentifié
Messages : 3
Inscription : 20 sept. 2022 07:32

Re: [Basic]Utilisation de Stream en mode Append.

Message par Thanauser »

Merci beaucoup !
ça me semble résoudre mes problèmes. Je vais tester de suite (le temps de reprendre une ancienne version de LO, suite à une màj, mon code ne fonctionne plus :cry: ).

Edit. Après tests ça fonctionne exactement comme souhaité (Vers l.o:7.2.6.2). Merci encore.
Libre Office 7.4.1 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Basic]Utilisation de Stream en mode Append.

Message par Dude »

Salut,
Thanauser a écrit : comment écrire en fin de fichier
Il faut agir avec la méthode seek et la propriété Length du flux récupéré.
Thanauser
Fraîchement OOthentifié
Messages : 3
Inscription : 20 sept. 2022 07:32

Re: [Résolu][Basic]Utilisation de Stream en mode Append.

Message par Thanauser »

Merci pour cette précision. C'est bien ce que j'avais tenté mais j'ai dû mal m'y prendre. Je tenterai à nouveau. :super:
Libre Office 7.4.1 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Basic]Utilisation de Stream en mode Append.

Message par Dude »

Thanauser a écrit : 21 sept. 2022 06:40 C'est bien ce que j'avais tenté mais j'ai dû mal m'y prendre.
Je ne vois pas ces instructions dans le code que tu publies.