ouvrir et fermer des fichiers - méthodes distinctes
Je suis en train d'apprendre les bases de la lecture à partir de fichiers texte. J'ai un code qui fonctionne très bien si tout est dans la méthode main. Cependant, pour cet exercice, je suis invité à mettre de l'ouvrir et de fermer les méthodes de méthodes distinctes. La méthode ouverte prend un argument (le nom de fichier) et de la méthode ne prend pas d'arguments.
La méthode ouverte fonctionne très bien. La méthode close est mon problème.
import java.io.*;
class EmpInFile
{
public static void main(String[] args) throws IOException {
EmpInFile myFile = new EmpInFile() ;
myFile.openFile("payslip.txt") ;
myFile.closeFile() ;
} //end main
public void openFile(String filename) throws IOException {
String line ;
int numLines ;
//open input file
FileReader reader = new FileReader(filename) ;
BufferedReader in = new BufferedReader(reader) ;
numLines = 0 ;
//read each line from the file
line = in.readLine() ; //read first
while (line != null)
{
numLines++ ;
System.out.println(line) ; //print current
line = in.readLine() ; //read next line
}
System.out.println(numLines + "lines read from file") ;
} //end openFile
public void closeFile() throws IOException {
in.close() ;
System.out.println("file closed") ;
} //end closeFile
} //end class
Vous devez vous connecter pour publier un commentaire.
Avoir
openFile
etcloseFile
partager quelques données, vous avez besoin de mettre les données en tant que champ dans la classe.Je pense que c'est un mauvais design. Votre openFile() la méthode est bien plus que cela - c'est la lecture de l'ensemble du contenu et en écho à la console (inutile, mais qu'est ce que vous faites).
Je ne vois pas quelle est la valeur de votre méthode close() est à fournir. Vous feriez mieux de passer dans un Fichier pour fermer. Qu'avez-vous fait lorsque vous enroulez simplement la méthode à partir de java.io.Fichier? Au moins gérer l'exception de sorte que les utilisateurs n'ont pas à.
Je ne conseillons pas l'utilisation de variables de classe. Vous pouvez écrire trois méthodes sont statiques qui sera beaucoup plus utile:
Vous avez besoin de faire
in
une classe de niveau de champ.Votre pointeur de fichier n'est pas visible dans la
close
méthode. Pour avoir laopen
etclose
méthodes, votreFileReader
doit être une variable de membre.Je veux juste ajouter quelque chose ici. Ce n'est pas une answet mais une information utile pour vous. Vous n'avez pas besoin de fermer les deux BuffuredReader et FileReader. La fermeture d'une des BufferedReader est assez. Question précédente a été répondu ici