Estou com um problema que já tentei resolver de várias formas, mas sem êxito.
Primeiramente, sei que há ao menos duas formas de se passar um arquivo como parâmetro.
Nos meus exemplos, irei supor que tenho apenas um único arquivo Soma.java e seu respectivo Soma.class. e quero que ele leia o arquivo entrada.txt.
1- A primeira alternativa, é passar o nome do arquivo como parâmetro, mas eu NÃO quero dessa forma, estou colocando apenas como exemplo do que eu não quero fazer.
Nesse caso, por linha de comando, vou até o diretório do soma.class (onde coloco também o entrada.txt) e digito o seguinte no prompt:
java Soma entrada.txt
Nesse caso, no método main, faço o seguinte:
public static void main(String[] args) throws IOException {
String arquivo = args[0];
File file = new File(arquivo);
FileReader reader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(reader);
// daqui para baixo, nada importa pro problema em questão
String linha = "";
long soma = 0;
while ((linha = bufferedReader.readLine()) != null) {
soma += Long.valueOf(linha);
}
System.out.println("Soma: " + soma);
bufferedReader.close();
reader.close();
}
Isso dá certo. Inclusive, consigo automatizar esse processo no eclipse. Vou em Run>Run Configurations>Arguments. Em “Program arguments”, coloco entrada.txt. (mas, dessa vez, ao invés do entrada.txt ficar na pasta bin, coloco na raiz do projeto). Até aqui, tudo Ok.
2-outra alternativa possível e que eu gostaria de poder automatizar no Eclipse, é descrita a seguir.
ao invés de passar o nome do arquivo como argumento, passo o arquivo como argumento, da seguinte forma no prompt:
java Soma < entrada.txt
Notem a diferença com o anterior, que não possuía o “<”. Dessa forma, preciso mudar o meu método main da seguinte forma.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long soma = 0;
while (sc.hasNextInt()) {
soma += sc.nextInt();
}
System.out.println("Soma: " + soma);
sc.close();
}
Até aí, tudo funciona muito bem também. O problema, é quando tento automatizar esse processo no Eclipse assim como fiz com o anterior.
No “Program Arguments” do “Run Configurations”, já tentei colocar “entrada.txt”, “< entrada.txt”, e “${file_prompt}”, mas nenhuma das maneiras funcionam.
Alguém sabe como automatizar esse segundo processo via Eclipse?
Obrigado.