java - 从文件复制/写入文件

标签 java file file-io

如何从文件中“删除”字符。另外,如何打印文件中的内容?

编写一个程序来读取文本文件,可能是小说的文本。该程序将相同的文本复制到输出文件,只是删除了所有无用的单词(例如“the”、“a”和“an”)。 (决定要删除哪些其他单词。删除的单词列表称为停止列表。)通过使用 hasNext() 和 next() 逐个标记地读取文本文件标记来执行此操作,但仅写出不在停止列表。

提示用户输入和输出文件的名称。保留输入文件的行结构。为此,请使用 nextLine() 读取每一行,然后为该行创建一个新的扫描器。 (查看 Scanner 的在线文档。)对于每行的 Scanner,使用 hasNext() 和 next() 来扫描其标记。

public static void main(String[] args) throws IOException {

    String fileName;
    Scanner user = new Scanner(System.in);
    System.out.print("File name: ");
    fileName = user.nextLine().trim();

    File file = new File(fileName);



    PrintStream printfile = new PrintStream(file);
    System.out.println("Input data into file: ");
    String datainfile = user.nextLine();
    Scanner scan = new Scanner(file);
    printfile.println(datainfile);

    while (scan.hasNextLine()) {
        while (scan.hasNext()) {
            String character = scan.next();
            if (character.equals("a")) {

            }
        }
    }
}

编辑 感谢 peeskillet 我再次尝试。但是,我的程序中似乎有一个错误,我得到:

  AAApotatopotatopotatojava.util.Scanner[delimiters=\p{javaWhitespace}+][position=0]                            [match valid=false][need input=false][source closed=false][skipped=false][group  separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q�\E][infinity string=\Q∞\E]

你能检查我的程序吗?

public static void main(String[] args) throws IOException {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Input File name: ");
    String filename1 = keyboard.nextLine().trim();
    System.out.print("Output File name: ");
    String filename2 = keyboard.nextLine().trim();

    File inputFile = new File(filename1);
    File outputFile = new File(filename2);

    PrintStream printfile = new PrintStream(inputFile);
    System.out.println("Input data into file: ");
    String datainfile = keyboard.nextLine();

    printfile.println(datainfile);

    Scanner inFile = new Scanner(inputFile);
    PrintWriter writeFile = new PrintWriter(outputFile);

    Scanner lineScanner;

    while (inFile.hasNextLine()) {

        String line = inFile.nextLine();

        lineScanner = new Scanner(line);

        while (lineScanner.hasNext()) {
            String word = lineScanner.next();
            if(!(word.equals("a"))) {
                writeFile.print(word + " ");
                System.out.print(word);

            }
            if(!(word.equals("an"))) {
                writeFile.print(word + " ");
                System.out.print(word);
            }
            if(!(word.equals("the"))) {
                writeFile.print(word + " ");
                System.out.print(word);
            }
            else {
                writeFile.print(" ");
            }

        }

        writeFile.println();

    }
    writeFile.close();

    Scanner readOutput = new Scanner(outputFile);

    System.out.println(readOutput);

}
}

最佳答案

首先,您需要两个 File 对象,一个用于输入,一个用于输出。你只有一个。

你想做这样的事情

Scanner keyboard = new Scanner(System.in);
System.out.print("Input File name: ");
String filename1 = keyboard.nextLine();
System.out.print("Output File name: ");
String filename2 = keyboard.nextLine();

File inputFile = new File(filename1);
File outputFile = new File(filename2);

Scanner infile = new Scanner(inputFile);
PrintWriter outputFile = new PrintWriter(outputFile);

Scanner lineScanner;

while(infile.hasNextLine()){             // here you read each line of a file
    String line = inFile.nextLine();     // here is a line

    lineScanner = new Scanner(line);     // for the above line, create a scanner 
                                         // just to scan that line
    while(lineScanner.hasNext()){        // loop through that line
        // do something
    }
}
outputFile.close();

编辑:我会将所有条件放入一个语句中

    while (lineScanner.hasNext()) {
        String word = lineScanner.next();
        if(!(word.equals("a")) && !(word.equals("an")) && !(word.equals("the"))) {
            writeFile.print(word + " ");
            System.out.print(word);
        }

    }

关于java - 从文件复制/写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20335143/

相关文章:

java - 既然他们停止为 Eclipse 开发 derby 插件,是否可以在 Eclipse 中使用来自 apache 的 derby?

java - 将字节数组写入文件(大文件大小)

Python file.read() 在文件开头看到垃圾字符

java - 写入文件,然后使用 WindowListener 保存它

javascript - 如何在 grunt 中解析 '<%= =>' ?

Java OutputStream 相当于 getClass().getClassLoader().getResourceAsStream()

java - 静态方法错误

java - 为什么不能将 RandomAccessFile 转换为 Inputstream?

java - 服务器 B 上的进程文件(位于服务器 A 上)

java - 在 tomcat 8 中,如何在 setenv.bat 中提供文件路径以从 java 类读取