将文件读入数组...我不明白错误的来源

时间:2014-12-10 06:07:12

标签: java arrays

//将文件读入String数组

public String[] readFixedString()throws FileNotFoundException
 {
  int i = 0;
  Scanner fileIn=null;
  try
  {
    fileIn = new Scanner(new FileInputStream("Spices.txt"));
  }
  catch (IOException e)
  {
   System.out.println(e.getMessage());
   System.exit(0);
  }
  while(fileIn.hasNextLine())
  {
   this.textfile[i++] = fileIn.nextLine();
  }

  fileIn.close();
  return textfile;

 }

主要方法

public static void main(String[] args)throws FileNotFoundException
   {
  ProductData pd=new ProductData();

  pd.readFixedString();
   }
  

显示java.lang.NullPointerException         at ProductData.readFixedString(ProductData.java:57)         在ProductData.main(ProductData.java:125)         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)         at java.lang.reflect.Method.invoke(Unknown Source)         在u.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

我不明白我的错误来自我的文件确实存在,并且路径被跟踪到我检查的正确位置只需读入文件而不将条目放入数组

3 个答案:

答案 0 :(得分:1)

this.textfile最有可能是null,请确保您正确初始化:

this.textfile = new String[your_size];

或者,正如建议的那样,使用List实施,例如ArrayList

private final List<String> textFile = new ArrayList<String>();

答案 1 :(得分:0)

尝试这种方式:

{
        File f=new File("test.txt");
        LineNumberReader lineReader=new LineNumberReader(new FileReader(f));
        int counter=0;
        while(lineReader.ready())
        {
            lineReader.readLine();
        }
        lineReader.close();
        counter=lineReader.getLineNumber();
        System.out.println(counter);
        String [] str=new String[counter];
        Scanner scan=new Scanner(f);
        int i=0;
        while(scan.hasNextLine())
        {
            str[i++]=scan.nextLine();
        }
        scan.close();
        for (String string : str)
        {
            System.out.println(string);
        }
    }

答案 2 :(得分:0)

你可能想尝试这个,因为你说你的文件有问题,也要确保你的 文件路径是正确的。这是使用ArrayList

的实现
  ArrayList<String> textFile = new ArrayList<String>();
  File file = new File("Spices.txt"); 
  Scanner fileIn =  new Scanner(file); 
  while(fileIn.hasNextLine()){
     textFile.add(fileIn.nextLine());
  }
  fileIn.close();