XsergeiX
XsergeiX

Reputation: 107

Error in Java with file reading

So there is the code:

public class Main{
  public static void main(String[] argv) throws IOException{
    new Main().run();
  }
  PrintWriter pw;
  Scanner sc;
  public void run() throws IOException{
    sc = new Scanner(new File("input.txt"));
    int a=sc.nextInt();
    pw = new PrintWriter(new File("output.txt"));
    pw.print(a*a);
    pw.close();
  }
}

Error:

Exception in thread "main" java.io.FileNotFoundException: input.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.util.Scanner.<init>(Unknown Source)
    at Main.run(Main.java:14)
    at Main.main(Main.java:8)

Like i understand it can't find file named input.txt, BUT! I have that file in same directory where Main class is, what can be the promblem then? p.s Tried on cmd and eclipse, both give same error.

Upvotes: 3

Views: 2370

Answers (3)

Elliott Frisch
Elliott Frisch

Reputation: 201447

You probably need to specify the PATH to your file, one thing you can do is test for existence and readability with File.canRead() like

File file = new File("input.txt");
if (!file.canRead()) {
    System.err.println(file.getCanonicalPath() + ": cannot be read");
    return;   
}

An example using a PATH might be (for Windows) -

File file = new File("c:/mydir/input.txt");

Upvotes: 0

gkrls
gkrls

Reputation: 2664

You can use System.out.println(System.getProperty("user.dir")) to see where Java is looking for the file by default. This is most likely your project folder. This is were you have to put the file if you don't want to specify an absolute path.

Upvotes: 0

Jigar Joshi
Jigar Joshi

Reputation: 240900

it is not relative to your Main class, it is relative from where you launch this Java program (i.e. current work directory)

it is relative to

System.getProperty("user.dir")

Upvotes: 4

Related Questions