Я новичок в программировании и у меня есть базовые знания.
Я пытаюсь сделать программу, которая:
Например, если у меня есть файл журнала / txt. Из него я хочу извлечь все строки, которые я читаю с клавиатуры в пункте 2.
После этого я хочу, чтобы все эти строки были записаны в новый файл журнала / txt.
Надеюсь, вы поняли, что я пытаюсь сделать.
Это то, что я писал до сих пор, но я как бы застрял в идеях, и, поскольку я все еще изучаю синтаксис кодирования, довольно сложно это понять.
package com.kwextractor;
import java.io.*;
import java.util.Scanner;
public class Main {
public static String inputFilePath;
public static String outputFilePath;
public static String textToGet;
public static void main(String[] args) throws IOException {
Scanner filePathIn = new Scanner(System.in);
Scanner inputText = new Scanner(System.in);
Scanner filePathOut = new Scanner(System.in);
System.out.println("Enter file path:");
inputFilePath = filePathIn.nextLine();
System.out.println("Enter the string you want to extract:");
textToGet = inputText.nextLine();
System.out.println("Enter the path of the exported file:");
outputFilePath = filePathOut.nextLine();
File inputFile = new File(inputFilePath +".txt");
BufferedReader inputReader = new BufferedReader(new FileReader(inputFile));
String nextLine;
while ((nextLine = inputReader.readLine()) != null)
{
if (nextLine.equals(textToGet)) {
BufferedWriter writer = null;
try {
File outputFile = new File(outputFilePath+".txt");
System.out.println(outputFile.getCanonicalPath());
writer = new BufferedWriter(new FileWriter(outputFile));
writer.write(textToGet);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// Close the writer regardless of what happens...
writer.close();
} catch (Exception e) {
}
}
}
}
}
}
для образовательных целей этот код - уже тяжелая работа ... попробуйте - действительно - понять код, например Обработка исключений сама по себе уже является важным делом, поскольку существует много кода без достаточной обработки исключений ... в большинстве случаев это выглядит как `catch (Exception e) {e.printStackTrace (); } `или даже лучше //TODO, также потоки, буферы и даже то, что нет причин делать переменную общедоступной, как и в вашем коде нет причин делать ее статической. (Я надеюсь, что это достаточно "идей", которые вы можете придумать, чтобы научиться программировать)
@makoto Я не вижу здесь неполных вопросов. Я точно объяснил, что хочу создать, а также поместил код в надежде, что кто-то попытается объяснить мне, что я сделал не так, потому что, конечно, программа не запущена и, возможно, кто-то сможет меня исправить.
Да, именно тот факт, что вы хотите, чтобы мы объяснили, как вы можете создать свое приложение, делает ваш вопрос «неполным» в лучшем случае. Вы не можете просто ожидать, что мы сделаем это здесь. Мы можем помочь вам с деталями, но вы должны приложить усилия. Я настоятельно рекомендую вам выполнить то, что я предложил выше.
@moneydhaze Я получу все эти советы и попробую применить их. Благодарность




Короче говоря, вы пытаетесь сделать слишком много вещей одновременно. Программирование может быть очень похоже на математическое уравнение, вам нужно только одно неизвестное за раз.
Это отличная идея. Сначала я подумал о создании разных классов, которые потом буду вызывать в основной функции. Но я попробую то, что вы сказали, спасибо!
Итак, ребята ... Я попытался переработать программу и поискать больше о том, как я могу выполнить то, что я хочу сделать, где я застрял в той части, где мне нужно создать файл и написать в него. Буду признателен, если кто-нибудь скажет мне, что я сделал не так в той части, где мне нужно записать в новый файл. Вот код, который я переделал:
package com.readtxtfile;
import java.io.*;
import java.util.Scanner;
public class Main {
private static String inputFilePath;
private static String textToGet;
private static void readInputFile()
{
String line1 = null;
Scanner input1 = new Scanner(System.in);
System.out.println("Insert the input file path:");
inputFilePath = input1.nextLine();
try {
FileReader readInput = new FileReader(inputFilePath+".txt");
BufferedReader bufferedInput = new BufferedReader(readInput);
line1 = bufferedInput.readLine();
if (line1 != null)
System.out.println("FILE LOADED SUCCESFULLY");
bufferedInput.close();
} catch (FileNotFoundException ex) {
System.out.println(
"Unable to open file '" + inputFilePath + "'");
} catch (IOException ex) {
System.out.println(
"Error reading file '" + inputFilePath + "'");
}
}
private static void textSearch()
{
Scanner input2 = new Scanner(System.in);
System.out.println("Insert the text you want to extract:");
textToGet = input2.nextLine();
}
private static void writeOutputFile()
{
Scanner input3 = new Scanner(System.in);
System.out.println("Insert the output file path:");
String outputFilePath = input3.nextLine();
Scanner input4 = new Scanner(inputFilePath);
int lineNumber = 0;
while (input4.hasNextLine()) {
String line2 = input4.nextLine();
lineNumber++;
if (textToGet.equals(line2))
{
File output_file = new File(outputFilePath +".txt");
FileWriter writeOutput = null;
BufferedWriter bufferedInput = new BufferedWriter(writeOutput);
try {
writeOutput = new FileWriter(output_file +".txt");
writeOutput.write(line2);
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
public static void main(String[] args)
{
readInputFile();
textSearch();
writeOutputFile();
}
}
Если вы когда-нибудь застреваете в идеях, то последний, который вы хотите сделать, представляет нам неполный вопрос. Найдите время, чтобы вернуться к доске и конкретно наметить, чего вы хотите достичь с помощью своей программы. Тогда работайте в сторону выполнение это. Если вы застряли в какой-то конкретной части этого вопроса, вернитесь и спросите нас. Тогда вы будете лучше подготовлены для этого.