OVH Cloud OVH Cloud

Self Learning - ???

3 réponses
Avatar
Latyr_Dev
Bonjour

Quand j'essaie de compiler le code ci dessous j'ai un message d'erreur=20
d'Eclipse disant :
"La variable locale sortie peut ne pas avoir =E9t=E9 initialis=E9e"
Les variable en cause sont entree et sortie aux lignes 45-46 ; 56-57.

Pourquoi ?

Merci d'avance



/*
* Cr=E9=E9 le 8 juin 2004
*
* Pour changer le mod=E8le de ce fichier g=E9n=E9r=E9, allez =E0 :
* Fen=EAtre>Pr=E9f=E9rences>Java>G=E9n=E9ration de code>Code e=
t=20
commentaires
*/

/**
* @author JLF928
*
* Pour changer le mod=E8le de ce commentaire de type g=E9n=E9r=E9, allez =
=E0 :
* Fen=EAtre>Pr=E9f=E9rences>Java>G=E9n=E9ration de code>Code e=
t=20
commentaires
*/
import java.io.*;

public class CopyBytes {
=09public static void main(String[] args) {
=09=09//D=E9claration des variables
=09=09File inputFile;
=09=09File outputFile;
=09=09FileInputStream entree;
=09=09FileOutputStream sortie;
=09=09int c;

=09=09
=09=09inputFile =3D new File("outagain.txt");
=09=09outputFile =3D new File("outagainBytes.txt");
=09=09
=09=09try {
=09=09=09entree =3D new FileInputStream(inputFile);
=09=09=09sortie =3D new FileOutputStream(outputFile);
=09=09}
=09=09catch (FileNotFoundException e){
=09=09=09System.err.println(e.getMessage());
=09=09=09System.exit(-1);
=09=09}
=09=09catch (Exception e){
=09=09=09System.out.println(e.toString());
=09=09=09System.exit(-1);
=09=09}
=09=09
=09=09c =3D 1000;
=09=09
=09=09try {
=09=09=09while((c =3D entree.read()) !=3D -1) {
=09=09=09=09sortie.write(c);
=09=09=09}
=09=09}
=09=09catch (IOException e){
=09=09=09System.err.println(e.toString());
=09=09}
=09=09
=09=09finally {
=09=09=09System.out.println("Closing Streams...");
=09=09=09try {
=09=09=09=09entree.close();
=09=09=09=09sortie.close();
=09=09=09}
=09=09=09catch (IOException e) {
=09=09=09=09System.out.println("Erreur =E0 la fermeture des=20
Streams...");
=09=09=09=09System.err.println(e.toString());
=09=09=09}
=09=09};
}
}=09
=09=09=09
=09=09=09

3 réponses

Avatar
Jean Bernard Root
Latyr_Dev wrote:

Bonjour

Quand j'essaie de compiler le code ci dessous j'ai un message d'erreur
d'Eclipse disant :
"La variable locale sortie peut ne pas avoir été initialisée"
Les variable en cause sont entree et sortie aux lignes 45-46 ; 56-57.

Pourquoi ?

Merci d'avance



/*
* Créé le 8 juin 2004
*
* Pour changer le modèle de ce fichier généré, allez à :
* Fenêtre>Préférences>Java>Génération de code>Code et
commentaires
*/

/**
* @author JLF928
*
* Pour changer le modèle de ce commentaire de type généré, allez à :
* Fenêtre>Préférences>Java>Génération de code>Code et
commentaires
*/
import java.io.*;

public class CopyBytes {
public static void main(String[] args) {
//Déclaration des variables
File inputFile;
File outputFile;
FileInputStream entree;
FileOutputStream sortie;
int c;


inputFile = new File("outagain.txt");
outputFile = new File("outagainBytes.txt");

try {
entree = new FileInputStream(inputFile);
sortie = new FileOutputStream(outputFile);
}
catch (FileNotFoundException e){
System.err.println(e.getMessage());
System.exit(-1);
}


Et bien :
- sortie n'est pas initialisée lors de sa déclaration
- si le new FileOutputStream() qui initialise entree jette une
exception, sortie n'aura pas été executée.

Effectivement, ce cas ne peut pas arriver puisque vous sortez de votre
programme en cas d'exception, mais le compilateur ne le voit pas.

Donc initialisez entree et sortie avec null lors de leur déclaration.

Avatar
Francis JUGE-BOIRARD
Latyr_Dev wrote:
Bonjour

Quand j'essaie de compiler le code ci dessous j'ai un message d'erreur
d'Eclipse disant :
"La variable locale sortie peut ne pas avoir été initialisée"
Les variable en cause sont entree et sortie aux lignes 45-46 ; 56-57.

Pourquoi ?

Merci d'avance



/*
* Créé le 8 juin 2004
*
* Pour changer le modèle de ce fichier généré, allez à :
* Fenêtre>Préférences>Java>Génération de code>Code et
commentaires
*/

/**
* @author JLF928
*
* Pour changer le modèle de ce commentaire de type généré, allez à :
* Fenêtre>Préférences>Java>Génération de code>Code et
commentaires
*/
import java.io.*;

public class CopyBytes {
public static void main(String[] args) {
//Déclaration des variables
File inputFile;
File outputFile;
FileInputStream entree;
FileOutputStream sortie;
// Solution FileOutputStream sortie = null;

int c;


inputFile = new File("outagain.txt");
outputFile = new File("outagainBytes.txt");

try {
entree = new FileInputStream(inputFile);
sortie = new FileOutputStream(outputFile);
}
catch (FileNotFoundException e){
System.err.println(e.getMessage());
System.exit(-1);
}
catch (Exception e){
System.out.println(e.toString());
System.exit(-1);
}

c = 1000;

try {
while((c = entree.read()) != -1) {
sortie.write(c);
}
}
catch (IOException e){
System.err.println(e.toString());
}

finally {
System.out.println("Closing Streams...");
try {
entree.close();
sortie.close();
}
catch (IOException e) {
System.out.println("Erreur à la fermeture des
Streams...");
System.err.println(e.toString());
}
};
}
}




Avatar
Latyr_Dev