以stdin Java读取文件

时间:2018-07-19 02:28:26

标签: java io

我想读取文件作为输入

java Nbody 10 2 < file.txt

但是,当我写以下内容时:

import java.io.*;
import java.util.*;
public class Nbody {
    public static void main(String[] args) {
        //command line arguemnet 
        double T = Double.parseDouble(args[0]);
        double dt = Double.parseDouble(args[1]); 
         //number of particles 
        int n = StdIn.readInt();
        }
    }

我收到以下错误

  

试图从标准输入中读取一个'int'值,但是没有   更多令牌可用

file.txt包含一个整数,似乎无法将文件作为StdIn读取

1 个答案:

答案 0 :(得分:-1)

使用命令行,可以在主方法中将filePath作为参数传递。

  1. 您可以使用Scanner来读取文件数据

    public static void main(String args []){

    double T = Double.parseDouble(args[0]);
     double dt = Double.parseDouble(args[1]); 
     Scanner sc = new Scanner(new File(args[2]));
      while(sc.hasNextLine()) System.out.println(sc.nextLine());
    }
    

您可以在命令行中传递文件路径。

java Nbody 10 2“ /xxx/yyyy/file.txt”

  1. ,或者您可以使用BufferedReaderFileReader

    public static void main(String[] args) {
        double T = Double.parseDouble(args[0]);
        double dt = Double.parseDouble(args[1]); 
        String input = null;
        int number = 0;
    try {
        BufferedReader bufferedReader = new BufferedReader(new FileReader(args[2]));
        input = bufferedReader.readLine();
        number = Integer.parseInt(input);
    } catch (NumberFormatException ex) {
       System.out.println("Not a number !");
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    }

注意::在Eclipse中,您可以进入启动配置编辑器,并从Eclipse中手动指定要在启动时添加的参数。