Fichier de n lignes -> n fichiers de 1 ligne

, par Cayrel Pierre-Louis

Problème récurrent : J’ai un fichier avec n lignes et je veux faire un travail sur la première ligne puis sur la seconde et ainsi de suite. Comment garder en mémoire le fait que j’ai déja travailler avec la première ?
Solution : Convertir mon fichier de n lignes en n fichiers d’une ligne...

En Java : (Merci Julien)

import java.io.* ;

public class lireFichier {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String sortie = args[0] ;

String chaine="" ;

//lecture du fichier texte
try{
InputStream ips= new FileInputStream(sortie) ;
InputStreamReader ipsr=new InputStreamReader(ips) ;
BufferedReader br=new BufferedReader(ipsr) ;
String ligne ;
int i=1 ;
while ((ligne=br.readLine()) !=null){
//System.out.println(ligne) ;
chaine=ligne ;

//création ou ajout dans le fichier texte
try {
FileWriter fw = new FileWriter ("sortie"+i+".txt") ;
BufferedWriter bw = new BufferedWriter (fw) ;
PrintWriter fichierSortie = new PrintWriter (bw) ;
fichierSortie.println (chaine) ;
fichierSortie.close() ;
//System.out.println("Le fichier " + fichier + " a été créé !") ;
}
catch (Exception e){
System.out.println(e.toString()) ;
}

i++ ;
}
br.close() ;
}
catch (Exception e){
System.out.println(e.toString()) ; } }

}


En C : (Merci Ismaël)

#include
#include
#include
#include

int main(int argc, char *argv[]){
FILE* inputFile = NULL ;
FILE* outputFile = NULL ;

char name[256] ;

char * line = NULL ;
size_t len = 0 ;
size_t read ;

int cpt = 0 ;

if( argc != 2 ){
fprintf(stderr, "Error : argument number incorrect\n") ;
exit(1) ;
}

if( !inputFile = fopen(argv[1], "r" ) ){
fprintf(stderr, "Error : unable to open the inputfile\n") ;
exit(1) ;
}

while( (read = getline(&line, &len, inputFile)) != -1) {
vscanf(name, "out_%d.txt", cpt++) ;

if( !outputFile = fopen(name, "w" ) ){
fprintf(stderr, "Error : unable to open the inputfile\n") ;
exit(1) ;
}
fprintf(outputFile, "%s", line) ;

fclose(outputFile) ;
}

fclose(inputFile) ;

return 0 ;
}


En CSH : (Merci Pascal)

>#!/bin/tcsh
>set nblignes = `wc -l  <  $argv[1]`
>while ($nblignes > 0)
>  sed -n "${nblignes}s/.*/&/p" $argv[1] > ligne.$nblignes.txt
>  @ nblignes--
>end
SPIP | | Plan du site | Suivre la vie du site RSS 2.0

Habillage visuel © Kozlika sous Licence GPL