Я новичок и нуждаюсь в некоторой помощи. Я пытаюсь сканировать текстовый файл в массив по строкам, но не указывая одну строку. Мой текстовый файлСканирование текстового файла в массив и опускание одной указанной строки
я
вы
он
она
это
Я хочу, чтобы создать метод, который будет сканировать это и положить элементов в массив с исключением для одной строки (который выбирается путем ввода String в качестве параметра для метода). Затем удалите исходный текстовый файл и напечатайте там созданный массив (без этой удаленной строки). Извините, я сосать объяснение.
Я попытался это:
public static void deleteLine(String name, String line) throws IOException {
String sc = System.getProperty("user.dir") + new File("").separator;
FileReader fr = new FileReader(sc + name + ".txt");
Scanner scan = new Scanner(fr);
int n = countLines(name); // a well working method returning the number if lines in the file (here 5)
String[] listArray = new String[n-1];
for (int i = 0; i < n-1; i++) {
if (scan.hasNextLine() && !scan.nextLine().equals(line))
listArray[i] = scan.nextLine();
else if (scan.hasNextLine() && scan.nextLine().equals(line))
i--;
else continue;
}
PrintWriter print = new PrintWriter(sc + name + ".txt");
print.write("");
for (int i = 0; i < n-2; i++) {
print.write(listArray[i] + "\n");
}
print.close()
}
я получаю «Линию не найден» ошибка, когда я вхожу: deleteLine («all_names», «вы») (all_names это имя файла). Я уверен, что проблема заключается в for-loop, но я понятия не имею, почему это не работает. :(
// решаемые //
Этот код работал после того, как все. Спасибо за ответы!
public static void deleteLine(String name, String line) throws IOException{
String sc = System.getProperty("user.dir") + new File("").separator;
FileReader fr = null;
fr = new FileReader(sc+name+".txt");
Scanner scan = new Scanner(fr);
int n = LineCounter(name);
String[] listArray = new String[n-1];
for (int i = 0; i < n-1; i++) {
if (scan.hasNextLine()) {
String nextLine = scan.nextLine();
if (!nextLine.equals(line)) {
listArray[i] = nextLine;
}
else i--;
}
}
PrintWriter print = new PrintWriter(sc+name+".txt");
print.write("");
for(int i=0;i<n-1;i++){
print.write(listArray[i]+System.lineSeparator());
}
print.close();
}
Примечание по условному обозначению кодирования: в Java-методах начинается строчная буква. –