【问题标题】:File IO using java使用java的文件IO
【发布时间】:2015-08-15 22:47:14
【问题描述】:

我是 java 新手并使用 netbeans v8。我正在尝试从文件中读取字符串并将修改保存在新文件中,但是当我运行代码时,它没有显示任何继续运行的内容。 代码是

package filereadingandwriting;

import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;

public class FileReadingAndWriting {
    public static void readAndWrite() throws Exception
    {
        File inputFile = new File("names.txt");
        Scanner input = new Scanner(System.in);
        File outFile = new File("output.txt");
        PrintWriter writer = new PrintWriter(outFile);
        for(int i = 0;input.hasNextLine(); i++)
        {
            String inputLines = input.nextLine();
            writer.println("Sr#" + i + " " + inputLines);
    }

    input.close();
} // readAndWrite function ends.
public static void main(String[] args) throws Exception {
    // TODO code application logic here
    readAndWrite();
} // main function ends.

} //FileReadingAnd Writing class ends.

【问题讨论】:

  • 您似乎不是从 inputFile 读取,而是从 System.in 读取...
  • 请注意 java.io.File 被视为遗留 API。考虑改用 NIO.2 File API。这是教程:docs.oracle.com/javase/tutorial/essential/io/fileio.html
  • 还可以考虑使用 try-with-resources 来关闭您的输入和输出文件。
  • @Puce 被谁认为是遗留 API?不是 Javadoc。
  • @EJP 它被 Oracle 的教程视为遗留 API:docs.oracle.com/javase/tutorial/essential/io/legacy.html 事实上,“遗留文件 I/O 代码”部分似乎是唯一仍然提到 java.io.File 的地方。因此,像 Vector、Hashtable、java.util.Date、java.util.Calendar(仅举几例),java.io.File 也已被新的 API 取代。

标签: java file-io input io


【解决方案1】:

如果您想从 inputFile 中读取,您必须将代码更改为:

File inputFile = new File("names.txt");
Scanner input = new Scanner(inputFile);

在您的情况下,您将从 STDIN 读取。

您还应该使用较新的java.nio.* API

【讨论】:

    【解决方案2】:

    只需将new Scanner(System.in); 更改为new Scanner(inputFile);。

    【讨论】:

    • 现在显示找不到names.txt文件的错误。我已将 names.txt 文件放在与 java 文件相同的目录中。
    • @Talha 你需要把它放在其他地方,SO上应该有很多答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多