как читать из файла, который вводился в аргументе командной строки в Java?

#java

#java

Вопрос:

Я хочу прочитать из файла, где программа получает имя файла (файл также является файлом Java) из аргумента командной строки, а затем печатает только комментарии из файла, который я хочу прочитать из файла, используя java.nio.file.Files и java.nio.file.Path , возможно. я должен прочитать имя файла с помощью функции main я не знаю, как это сделать, любая помощь, пожалуйста? на самом деле это мой первый код, который я пишу на Java, поэтому у меня много трудностей, вот что у меня есть до сих пор :

 package firtJavaCode;

import java.io.*; 
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.StringTokenizer;
import java.lang.String ;

public class ReadFromFile {

    public static void main(String[] args) {
        try {
            //String filePath = "";   // here is my problem i don't know how to read from a giving file
            String line;
            BufferedReader br = new BufferedReader(new FileReader(filePath));
            int lineNumber = 0;
            while ((line = br.readLine()) != null) {
                lineNumber  ;
                if  (line.contains("//")) {
                     StringTokenizer st1 =  new StringTokenizer(line, "//");            
                     System.out.println(st1.nextToken()); 
                }
                
                // i still didn't complete the code , just want to figure how to read from file first
            }
        }catch (Exception e) {
            System.out.println(e);
        }
    }
}
  

Комментарии:

1. Краткое описание того, как получить доступ к аргументам командной строки в Java .

2. Аргументы командной строки передаются main() методу в args параметре.

Ответ №1:

У вас есть аргументы, которые записаны в консоли в массиве String[] args . Чтобы получить имя файла, мы предполагаем, что вы выполняете программу следующим образом: java example /home/file.txt .

 args[0] == "/home/file.txt"
  

Таким образом, путь к файлу уже сохраняется в args[0] виде строки, поэтому вам не понадобится дополнительное String filepath в коде.

 BufferedReader br = new BufferedReader(new FileReader(args[0]));
  

Таким образом, в основном аргументы, которые вы вводите после имени программы, сохраняются все в String args[] массиве.

Я также хотел бы реализовать способ проверки, введен ли только путь к файлу, а не какая-то другая ерунда, подобная этой:

 if (args.length() > 0)
{
    System.out.println("Error! Too many arguments entered!");
}
  

Комментарии:

1. args[0] = "/home/file.txt" строка пропускается, казалось бы, OP должен присвоить это значение в коде. Если что-нибудь, измените его на равенство, args[0] == "/home/file.txt"

2. уже сделал спасибо за совет, я пропустил ошибку.

3. я использую eclipse, как я могу выполнить код, используя eclipse, а не консоль

4. Перейдите на вкладку «Выполнить» -> Выполнить конфигурации -> Аргументы и введите путь к файлу. Вот учебное пособие с картинками imgur.com/a/qAYjFv0

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