Scanner cant find my file to read [Java with eclipse]

寵の児 提交于 2019-12-11 21:05:43

问题


I'm working on a project that takes in criteria supplied by a user, and compares it to an already created list of object containing similar criteria.

Currently, I'm trying to get the program to read the file, but I keep getting my exception and not what I want. My code for the scanner and file is as followed:

package project205;
import java.util.*;
import java.io.File;
import java.util.Scanner;
import java.io.FileNotFoundException;
public class HouseList {
ArrayList<House> houseList = new ArrayList<House>();
public HouseList(String fileName)
{

    //Open the data file

Scanner myFileIn = null;
    try
    {
      myFileIn = new Scanner(new File("houses.txt"));
    } 


    catch (FileNotFoundException e)
        {
            System.out.println("File: " + "houses.txt" + " is not found");
        }


    // First piece of data is the number of records
    int numRecords = myFileIn.nextInt();


    String address1;
    int price1;
    int area1;
    int numBedroom1;

    // Temp variable to accumulate the sum
    //double sum = 0.0;

    //Read the data line by line and build the 
    //array lists containing names and incomes
    for (int k = 0; k < numRecords; k++)
    {
        address1 = myFileIn.next();
        price1 = myFileIn.nextInt();
        area1 = myFileIn.nextInt();
        numBedroom1 = myFileIn.nextInt();

        House house1 = new House(address1, price1, area1, numBedroom1);
        houseList.add(house1);
     }
    // Close the input file
    myFileIn.close();

}

public String getHouses(Criteria c)
{
    String result = "";

    for(int i = 0; i < houseList.size(); i++)
    {
        House h1 = houseList.get(i);
        if (h1.satisfies(c))
        {
            result = result + h1.toString();
        }

    }
    return result;
}

public void printHouses(Criteria c)
{
    System.out.println(getHouses(c));
}

}

My file is in the same package, as I am using eclipse, but I keep getting "File: houses.txt is not found". To be thourough, the error I get is :

File: houses.txt is not found
Exception in thread "main" java.lang.NullPointerException
at project205.HouseList.<init>(HouseList.java:29)
at project205.HouseListTester.main(HouseListTester.java:7)

If anyone could even point me in the direction of what I'm missing here I would greatly appreciate it!


回答1:


This may help you:   

      //creating File instance to reference text file in Java
        File text = new File("<file location>/houses.txt");

        //Creating Scanner instnace to read File in Java
        Scanner scnr = new Scanner(text);

        //Reading each line of file using Scanner class
        while(scnr.hasNextLine()){
            //process file
        }       



回答2:


Use

System.getProperty("user.dir") + System.getProperty("file.separator") + "houses.txt"

to get the file path if houses.txt and the class file from which you are trying to access shares the same directory.

you can modify

myFileIn = new Scanner(new File("houses.txt"));
//to
myFileIn = new Scanner(new File(System.getProperty("user.dir") + System.getProperty("file.separator") + "houses.txt"));
//or
myFileIn = new Scanner(new File(System.getProperty("file.separator") + "houses.txt"));

Other case is that the file is in some other directory. In this scenario, provide relative path of this file ex.

//current dir is c: and your file is in d: then do
myFileIn = new Scanner(new File("addRelativeFilePathHere" + "houses.txt"));

Above, you need to end addRelativeFilePathHere with file.separator or prefix houses.txt with file separator.

This link to see what these properties points to and their meanings and for more inormation

http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html and

http://docs.oracle.com/javase/7/docs/api/java/io/File.html



来源:https://stackoverflow.com/questions/26249049/scanner-cant-find-my-file-to-read-java-with-eclipse

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!