We help IT Professionals succeed at work.

Getting an error "Bad File Descriptor" when trying to open a file

missymadi
missymadi asked
on
371 Views
Last Modified: 2012-05-05
Experts,

         I am getting an error in JAVA when I try to run my program. It compiles fine, and the program does run but I get an error message right before the first instruction "Bad File Descriptor". I posted my code below:

How do I resolve this error?
public void ReadSMLFile(String Filename) {
    // Open the file that is the first
    // command line parameter
    try {
      FileInputStream fstream = new FileInputStream(Filename);
      DataInputStream in = new DataInputStream(fstream);
      BufferedReader br = new BufferedReader(new InputStreamReader(in));
      String strLine;
 
      //Read file line by line
      while ( (strLine = br.readLine()) != null) {
        //if -99999 is found indicates end of file
        if (strLine.equals("-99999"))
          break;
 
 
AND the Main Function:
 
public static void main(String args[]) {
    try {
      Simpletron s = new Simpletron();
      if (args.length != 1)
        System.out.println("Must Provide Filename as Arguments");
      else
      {
        s.ReadSMLFile(args[0]);
        s.CodeProcess();
      }
    }
    catch (Exception e) {
      //System.out.println("File not found");
      System.err.println("Error: " + e.getMessage());

Open in new window

Comment
Watch Question

What is the file name that you are passing it? Does this file exist?
What type of Error was thrown? FileInputStream throws errors in these cases:

"Throws:
FileNotFoundException - if the file does not exist, is a directory rather than a regular file, or for some other reason cannot be opened for reading.
SecurityException - if a security manager exists and its checkRead method denies read access to the file."
This thread also listed a Bad File Descriptor issue:

https://www.experts-exchange.com/Programming/Languages/Java/Q_22838235.html

Author

Commented:
Yes, the file exists. The file is called TestCase1.txt. What is strange is that I created a test file called "test.txt" and ran it.  It shows the error: bad file descriptor then runs the program???

Author

Commented:
Yes, I saw the post that you have a link to, but that doesn't seem to be the issue in my case.
Could you post the stack trace please?

Author

Commented:
Where is that located?
When you get this error popup on the screen, goto the window hit "ctrl + c" and then paste it here.

Author

Commented:
This program is run from the command prompt. The entry is as follows:

c:\java Filename test.txt
Error: Bad file descriptor
***Program execution terminated***     This is the code running correctly that I put in the file. So it is running but getting a weird message in the beginning of the program execution.
Before we continue we first need to get this stacktrace

In your main method (the top most level)

wrap everything in a try/catch block like this:

public static void main(...){
   try
   {
      ... your code here ...
   }
   catch(Exception e){
      e.printStackTrace();
      System.out.println();
      System.out.println(e.getMessage());
   }
}

Author

Commented:
OK. compiled and executed successfully.

Author

Commented:
Where do I find the stack trace??
Hm interesting. So it still outputted the same thing with no stack trace in the output?
Could you do this for me, change the catch block to this:

      System.out.println("Here is the Stack Trace: ");
      e.printStackTrace();
      System.out.println();
      System.out.println(e.getMessage());


verify that it does indeed say "Here is the Stack Trace:". I am uncertain if even this catch block is called to begin with. To be it seems as if the code ran, and somewhere else inside the code it prints out the error message... but not here.

Author

Commented:
I added the code you suggested. Then I compiled and ran the project.

C:\Javastuff\file.java
Error!: No such file or directory
Enter a number:

I found the code where Error!: No such file or directory.....is running..I'll attach it below. It seems this line of code runs first then my program runs as instructed. How do I fix this?
public void ReadSMLFile(String Filename) {
    // Open the file that is the first
    // command line parameter
    try {
      FileInputStream fstream = new FileInputStream(Filename);
      DataInputStream in = new DataInputStream(fstream);
      BufferedReader br = new BufferedReader(new InputStreamReader(in));
      String strLine;
 
      //Read file line by line
      while ( (strLine = br.readLine()) != null) {
        //if -99999 is found indicates end of file
        if (strLine.equals("-99999"))
          break;
 
        //store line read into array sub i and remove the '+' char at the front
        opcodes[i] = Integer.parseInt(strLine.substring(1));
 
        //increment array index for next read
        i++;
 
        //Print the content on the console
        //System.out.println (strLine);
 
        in.close();
      }
    }
    catch (Exception e) { //FileNotFoundException e)
      //System.out.println("file not found");
      System.err.println("Error!: " + e.getMessage()); ****right here!!
    }
  }

Open in new window

This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.