Link to home
Start Free TrialLog in
Avatar of komlaaa
komlaaa

asked on

java.io.FileNotFoundException

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 )
            {
Avatar of Mick Barry
Mick Barry
Flag of Australia image

the file needs to be in the same directory you are running it from.
Avatar of komlaaa
komlaaa

ASKER

It is in the same directory as i am running from
then it should find it, what command do you use to run it?
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.

Post ur code and the directory structure u kept.....i'll check it out
Avatar of komlaaa

ASKER

============================= 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);
        }
    }
   
SOLUTION
Avatar of Mick Barry
Mick Barry
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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.
Avatar of komlaaa

ASKER

my bad splitting the point, could the page editor give , the assisted answer points to dungla ?
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?
Haha .... so late ;-)
Avatar of komlaaa

ASKER

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...?