Solved

java.io.FileNotFoundException

Posted on 2004-11-03
13
303 Views
Last Modified: 2008-03-17
Below is how i connect to a file and trying to read from it. the file is
in the same directory as the source code. Why am i having this error message:
Unexpected IO erro: java.io.FileNotFoundException: cdDdatabase.txt (The system cannot find the file specified)

================= SOURCE ===============
try
        {
             BufferedReader infile = new BufferedReader
                                         ( new FileReader("cdDdatabase.txt"));
             
            while( ( line = infile.readLine()) != EOS )
            {
0
Comment
Question by:komlaaa
  • 4
  • 4
  • 2
  • +2
13 Comments
 
LVL 92

Expert Comment

by:objects
Comment Utility
the file needs to be in the same directory you are running it from.
0
 

Author Comment

by:komlaaa
Comment Utility
It is in the same directory as i am running from
0
 
LVL 92

Expert Comment

by:objects
Comment Utility
then it should find it, what command do you use to run it?
0
 
LVL 3

Expert Comment

by:vikraman_b
Comment Utility
Before we can read from or write to a file we must first open the file. To open a file for reading we use the constructor contained FileReader class:

FileReader file = new FileReader("HelloWorld2.java");

This creates a stream object, called file, to read from a file called HelloWorld2.java (Table 1) contained in the current directory. If the named file cannot be opened a FileNotFoundException is generated. Consequently, whereas previously we declared instances of the InputStreamReader class as class instances we must now declare them as local instances within a method. Having done this we can now use the file object to create an instance of the BufferedReader class as before:

FileReader file          = new FileReader("HelloWorld2.java");
BufferedReader fileInput = new BufferedReader(file);

Note the similarity between this and the declarations used in the code given in Table 2:

 
InputStreamReader input         = new InputStreamReader(System.in);
BufferedReader    keyboardInput = new BufferedReader(input);

The BufferedReader constructor requires its argument to be an instance of the class Reader (or a sub-class of the class Reader), both the InputStreamReader and the FileReader classes are sub-callses of Reader and will therefore suffice. A class diagram illustrating the connections between these different classes is presented in Figure 1.

0
 
LVL 3

Expert Comment

by:vikraman_b
Comment Utility
Post ur code and the directory structure u kept.....i'll check it out
0
 

Author Comment

by:komlaaa
Comment Utility
============================= THE CODE =========================

 public void read()
    {
           CDCollections = new HashMap();
     
        String line;
        try
        {
             BufferedReader infile = new BufferedReader
                                         ( new FileReader("database.txt"));
             
            while( ( line = infile.readLine()) != EOS )
            {
                String fields[] = line.split("\\|");
                if( 0 == Integer.parseInt(fields[1]))
                {
                   typeOfCd = new Cd();
                   ((Cd)typeOfCd).read(fields, infile);
                   CDs.add(typeOfCd);
                }
               
               if( 1 == super.getType() )
               {
                   typeOfCd = new CompilationCd();
                   ((CompilationCd)typeOfCd ).read(fields, infile);
                   CDs.add(typeOfCd);
               }
              CDCollections.put(fields[1], typeOfCd );
              CdCategories.add(fields[1]);
             }
               infile.close();
         }
        catch(IOException e)
        {
            System.err.print("Unexpected IO erro: " + e);
        }
    }
   
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 92

Assisted Solution

by:objects
objects earned 125 total points
Comment Utility
the codes fine, you just need to ensure the file database.txt is in the same directory as you are tunning the applciation from.
0
 
LVL 92

Accepted Solution

by:
objects earned 125 total points
Comment Utility
otherwise include the full path to the file.
eg. if the file is in /database/files/database.txt then use:

             BufferedReader infile = new BufferedReader
                                         ( new FileReader("/database/files/database.txt"));
0
 
LVL 13

Expert Comment

by:dungla
Comment Utility
the file needs to be in the same directory you are running it from, for example, i have a project (create by NetBean) name MyApp, source file placed in MyApp/src/mypackage/source.java

and text file should be in MyApp/Text.txt

BufferedReader infile = new BufferedReader(new FileReader("Text.txt")); //will work correctly.

Other wise, you need to put fullpath of files.
0
 

Author Comment

by:komlaaa
Comment Utility
my bad splitting the point, could the page editor give , the assisted answer points to dungla ?
0
 
LVL 16

Expert Comment

by:gnoon
Comment Utility
Use

System.out.println(new File("cdDdatabase.txt").getAbsolutePath());

to see what's the file absolute path and see does it exists on that path.

Are you writing java applet?
0
 
LVL 16

Expert Comment

by:gnoon
Comment Utility
Haha .... so late ;-)
0
 

Author Comment

by:komlaaa
Comment Utility
I guess i just find a bug in this EE page implementation: The software shouldn't let me split point among the same Experts
see...?
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now