Comment faire un programme utiliser un fichier dont vous spécifiez le nom sur la ligne de commande

Comment puis-je obtenir ce programme à lire dans le "lab13.txt" dans la ligne de commande? J'ai essayé de comprendre cela pendant plus d'une heure et rien ne semblait fonctionner.

L'invite est "Ecrivez un programme qui détermine et affiche le nombre de lignes dans le fichier dont vous spécifiez le nom sur la ligne de commande." Testez votre programme avec lab13.txt. "

import java.util.Scanner;
import java.io.*;
class homework
{
    public static void main(String[] args) throws IOException
    {
        Scanner inFile= new Scanner(new File("lab13.txt"));
        int count=0;
        String s;
        while (inFile.hasNextLine())
        {
            s = inFile.nextLine();
            count++;
        }
        System.out.println(count + " Lines in lab13.txt");
        inFile.close();
    }
}
0

3 Réponses

Si vous voulez que l'utilisateur puisse entrer le nom de fichier à partir de la ligne de commande ou de la console dans eclipse, essayez d'utiliser

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Please enter filename : ");
    String filename = null;
    try {
        filename = reader.readLine();
    } catch (IOException e) {
        e.printStackTrace();
    } 

Vous pouvez ensuite insérer le nom de fichier dans votre objet Scanner

0
ajouté
Try this

In your code you need to replace new File("lab13.txt") with new File(args[0])

Pour la ligne de commande

public static void main(String[] args) {

File inFile =null;
  if (0 < args.length) {
      File inFile = new File(args[0]);
  }

    BufferedReader br = null;

    try {

        String sCurrentLine;

        br = new BufferedReader(new FileReader(inFile));

        while ((sCurrentLine = br.readLine()) != null) {
            System.out.println(sCurrentLine);
        }

    } 

    catch (IOException e) {
        e.printStackTrace();
    } 

    finally {
        try {
            if (br != null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

Pour un lieu particulier

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReaderExample {

    public static void main(String[] args) {

        BufferedReader br = null;

        try {

            String sCurrentLine;

            br = new BufferedReader(new FileReader("C:\\lab13.txt"));

            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

    }
}
0
ajouté

http://docs.oracle.com/javase/tutorial/essential/environment /cmdLineArgs.html

Les choses que vous ajoutez à la ligne de commande après le nom du programme vont dans le tableau args, donc:

Scanner inFile= new Scanner(new File(args[0]));
0
ajouté