Bonjour,
Je fusionne une vieille collection de fichiers séquentielles (type *.txt ou * a une valeur de 0 à 100 par exemple) en un seul fichier destination par exemple z.txt.
Pour cela j'utilise le petit programme suivant que je viens d'écrire sur console:
Nota : L'inter-code + Mid(Str(n), 2) + est nécessaire sinon la recherche se fera sur " 0.txt" et non "0.txt" ! et échouera donc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Imports System Module Program Sub Main() Dim linesFromFile1() As String Dim combinedLines As New List(Of String) For n = 0 To 100 linesFromFile1 = IO.File.ReadAllLines("F:\TEST\" + Mid(Str(n), 2) + ".ech") For linePos As Integer = 0 To System.Math.Max(linesFromFile1.Length, linesFromFile1.Length) - 1 combinedLines.Add(linesFromFile1(linePos)) Next Next IO.File.WriteAllLines("F:\TEST\Z.ech", combinedLines.ToArray()) End Sub End Module
Pour faire simple, ces fichiers séquentielles sont tous composés de fiches sur 3 lignes chacune avec en première position le numéro d'ordre 1 ,2 , 3 etc. Donc toutes les trois lignes on a une nouvelle fiche. Exemple :
ligne 1 : 1
ligne 2 : Blabla
ligne 3 : etc
ligne 4 : 2
ligne 5 : Chat
ligne 6 : souris
ligne 7 : 3
etc.
Mais en pratique c'est un peu n'importe quoi au niveau de l'ordre de mes fichiers d'origines 0.txt, 1.txt .... Il me faut modifier chronologiquement ces lignes de numéro peu importe le numéro qu'ils avaient au début. C'est déjà bien de ne pas avoir à les réorganiser !
Il me faut donc renuméroter les lignes 1 (modulo 3 pour les matheux) 4 , 7 , 10 , 13 etc avec un numéro d'ordre 1, 2, 3, 4 ...
Je pensais en utilisant ReadAllLines y arriver facilement en même temps que je cré z.txt. Malheureusement je n'ai pas trouvé l'astuce.
Si vous avez une idée je suis preneur.
En vous remerciant par avance
Partager