Separateur virgule CSV Java

Fermé
Rouliliii - 5 juil. 2017 à 16:45
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 5 juil. 2017 à 19:20
Bonjour,



Voila j'ai un petit programme qui me découpe mon fichier CSV.

Cependant j'avoue bloquer sur quelque chose de simple je penses, mon fichier CSV utilise "," comme séparateur de colonne et je souhaiterai dire à mon programme que lorsqu'il tombe sur une virgule alors il passe au mot suivant.



Merci d'avance pour votre aide :)



Voici mon programme :

var dateDay = java.util.Date();
var format = new java.text.SimpleDateFormat("yyyyMMdd")

_out = new java.io.BufferedWriter(new java.io.OutputStreamWriter(new java.io.BufferedOutputStream(new java.io.FileOutputStream("%x{$GestFiles_001_IN/tech:path()}x%/Servicenow_" + format.format(dateDay)+".csv")),"CP1252"));
_in = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.BufferedInputStream(new java.io.FileInputStream("%x{$GestFiles_001_IN/tech:path()}x%/Servicenow_tmp_" + format.format(dateDay)+".csv")),"CP1252"));
_in_n = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.BufferedInputStream(new java.io.FileInputStream("%x{$GestFiles_001_IN/tech:path()}x%/Servicenow_tmp_" + format.format(dateDay)+".csv")),"CP1252"));

var current_line = null;
var to_write = null;

try {

// Gestion header

current_line = _in.readLine();
_out.write(current_line + "\r\n");

next_line = _in_n.readLine();

// Gestion Data

next_line = _in_n.readLine(); // At this step, current_line is the row number 1, next_line the number 2

do {
current_line = _in.readLine();
next_line = _in_n.readLine();

to_write = current_line;

// While there is justification in the next line, concatenate on the same line
while (next_line != null && !(next_line.startsWith("\"PRJTASK")) && !(next_line.startsWith("\"_-ERRE-"))&& !(next_line.startsWith("\"B-"))&& !(next_line.startsWith("\"R-"))){

to_write = to_write + " " + next_line;
next_line = _in_n.readLine();
current_line = _in.readLine(); // Do not make a gap with next_line
}

if (to_write != null){
_out.write(to_write + "\r\n");
}

} while (current_line != null);
}
finally {
_in.close();
_in_n.close();
_out.close();
}
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
5 juil. 2017 à 18:05
Bonjour,

Vu ton code ce n'est pas vraiment du Java que tu fais (et ça m'a l'air bien compliqué). C'est quel langage exactement ?

Sinon tu peux faire un split sur un String pour récupérer les différentes colonnes séparées par ta virgule.

String[] columns = line.split(",");
0
Bonjour KXX,

effectivement c'est du rhino et on m'a dit que ça ressemblait au Java.


Merci pour ta réponse
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > Roulilili
5 juil. 2017 à 19:20
En fait Rhino est une implémentation de JavaScript en Java (qui sont deux langages distincts) et là tu mélanges les deux langages puisque tu mets des instructions Java dans ton JavaScript dans le but de ne faire quasiment que du Java avec Rhino (donc du Java en JavaScript écrit en Java...)
Ce ne serait pas plus simple de faire directement du Java dans ce cas ?
0