Есть утилита для сравнения файлов "test.txt" и "test1.txt". В командной строке работает исправно. Для запуска вводим "java -cp . CompFiles test.txt test1.txt"
(текстовые файлы предварительно помещаются в один каталог и все работает ок)
Но как запустить программу из Eclipse, при этом чтобы сразу указать названия файлов? При замене FileInputStream(args[0]) на FileInputStream("test.txt") все равно не видит файл в каталоге.
import java.io.*;
public class CompFiles {
public static void main(String[] args) {
int i = 0, j = 0;
if (args.length != 2) { //убедиться, что имена файлов передаются программе
System.out.println("Использование: Compfiles файл1 файл2");
return;
}
// Сравнить файлы
try ( FileInputStream f1 = new FileInputStream(args[0]);
FileInputStream f2 = new FileInputStream(args[1]))
{
//проверка содержимого файлов
do {
i = f1.read();
j = f2.read();
if(i !=j)break;
} while (i != -1 && j != -1);
if (i !=j)
System.out.println("Содержимое отличачется");
else
System.out.println("Содержимое совпадает");
}
catch (IOException exc) {
System.out.println("Ошибка ввода-вывода " + exc);
}
}
}
Используйте для получения потока в подобных случаях getResourceAsStream, в дальнейшем поможет избежать проблем с работой из jar.
FileInputStream f1 = CompFiles .getResourceAsStream("/test.txt");
Все оказалось гораздо проще, чем я думал. При вызове из командной строки все работает. Но чтобы задать значения сразу, нужно убрать оператор проверки if или оператор перехода return:
if (args.length != 2) { //убедиться, что имена файлов передаются программе
System.out.println("Использование: Compfiles файл1 файл2");
return;
}
Утилита видела, что значения командной строки нулевые и переходила в начало через return.
Для указания аргументов напрямую использовать:
FileInputStream f1 = new FileInputStream("test.txt");
FileInputStream f2 = new FileInputStream("testdata.txt")
В каждой среде разработки в настройках проекта есть возможность указать аргументы командной строки и рабочую папку.
В Eclipse - это место в меню Debug и Run в подпункте Debug Configurations и Run Configurations.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости