Передача файла в качестве аргумента командной строки и чтение его строк - PullRequest
3 голосов
/ 29 ноября 2010

это код, который я нашел в интернете для чтения строк файла, а также я использую eclipse и передал имя файла как SanShin.txt в поле аргумента.но он напечатает:

Error: textfile.txt (The system cannot find the file specified)

Код:

public class Zip {
    public static void main(String[] args){
        try{
            // Open the file that is the first 
            // command line parameter
            FileInputStream fstream = new FileInputStream("textfile.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
            //Read File Line By Line
            while ((strLine = br.readLine()) != null)   {
              // Print the content on the console
              System.out.println (strLine);
            }
            //Close the input stream
            in.close();
            }catch (Exception e){//Catch exception if any
              System.err.println("Error: " + e.getMessage());
            }


    }
}

Пожалуйста, помогите мне, почему он печатает эту ошибку.спасибо

Ответы [ 3 ]

12 голосов
/ 29 ноября 2010
...
// command line parameter
if(argv.length != 1) {
  System.err.println("Invalid command line, exactly one argument required");
  System.exit(1);
}

try {
  FileInputStream fstream = new FileInputStream(argv[0]);
} catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

// Get the object of DataInputStream
...

> java -cp ... Zip \path\to\test.file
1 голос
/ 29 ноября 2010

Когда вы просто указываете "textfile.txt", операционная система ищет этот файл в рабочем каталоге программы.

Вы можете указать абсолютный путь к файлу, например, new FileInputStream("C:\\full\\path\\to\\file.txt")

Также, если вы хотите узнать каталог, в котором работает ваша программа, попробуйте это: System.out.println(new File(".").getAbsolutePath())

1 голос
/ 29 ноября 2010

Ваш new FileInputStream("textfile.txt") правильный. Если он выдает это исключение, в текущем каталоге не будет textfile.txt при запуске программы. Вы уверены, что имя файла на самом деле не testfile.txt (обратите внимание на s, а не x в третьей позиции).


Не по теме : Но ваш ранее удаленный вопрос содержал вопрос о том, как построчно читать файл (я не думал, что вам нужно его удалять, FWIW). Предполагая, что вы все еще новичок и получаете представление о вещах, указатель: вы, вероятно, не хотите использовать FileInputStream, что для двоичных файлов, но вместо этого используйте Reader набор интерфейсов / классов в java.io (включая FileReader). Также, когда это возможно, объявляйте свои переменные, используя интерфейс, даже при инициализации их для определенного класса, например, Reader r = new FileReader("textfile.txt") (вместо FileReader r = ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...