Cant write to a RandomAccessFile?

When I click loginbutton in the applet many errors are occuring and nothing is written to the file "Customer.txt"
The code is as follows...

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
//<applet code=Login.class Width=400 Height=400>
//</applet>

public class Login extends JApplet implements ActionListener
{

      JTextField textcustname;
      JPasswordField textpassword;
      JLabel labelcustname;
      JLabel labelpassword;
      JButton loginbutton;
      public void init()
      {
            createApplet();
      }
      public void createApplet()
      {
            Container content;
            content=getContentPane();
            content.setLayout(new FlowLayout());
            labelcustname=new JLabel("Customer Login Name:");
            textcustname=new JTextField(10);
            labelpassword=new JLabel("Password:");
            textpassword=new JPasswordField(10);
            loginbutton=new JButton("Login");
            content.add(labelcustname);
            content.add(textcustname);
            content.add(labelpassword);
            content.add(textpassword);
            content.add(loginbutton);
            loginbutton.addActionListener(this);
      }
      public void actionPerformed(ActionEvent evt)
      {
            Object obj=evt.getSource();
            if(obj==loginbutton)
            {
                  String entry=textcustname.getText() +":"+new String(textpassword.getPassword());
                  try
                  {
                        RandomAccessFile logfile=new RandomAccessFile("D:\\java\\bin\\Customer.txt","rw");
                        logfile.seek(logfile.length());
                        logfile.writeBytes(entry);

                  }

                  catch(IOException e)
                  {
                        showStatus("Cannot write on to the log file"+e);
                  }
            }
      }
}

I even set the Policytool such that "Customer.txt" file has both read and write privileges.So any suggestions please? Thanks.
gopikrishAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

CEHJCommented:
Please post errors
gopikrishAuthor Commented:
But I cant see all the errors since one cant scroll up in the DOS window.So any way to look through all the errors or can I post whichever is visible?
CEHJCommented:
You'll have to get your DOS window organized. You have the following potential problems/potential problems:

1. You don't close the file
2. You don't check for presence of both username and password
3. Your policy file may not have been altered properly
Learn Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

gopikrishAuthor Commented:
       at java.awt.Component.processMouseEvent(Component.java:5100)
        at java.awt.Component.processEvent(Component.java:4897)
        at java.awt.Container.processEvent(Container.java:1569)
        at java.awt.Component.dispatchEventImpl(Component.java:3615)
        at java.awt.Container.dispatchEventImpl(Container.java:1627)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483
)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
        at java.awt.Container.dispatchEventImpl(Container.java:1613)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

These are the ones I am able to see.
CEHJCommented:
That's of no use unfortunately - it simply tells you that the problem's occurring in the event handler - which is pretty obvious anyway. You need to get your window organized and post the whole stack trace. I have no difficulty scrolling my DOS window - set its properties by right-clicking the title bar. Use the onboard help if you have difficulty
gopikrishAuthor Commented:
Hmm i tried a lot but in vain :(  I'am using win98 so maybe its not possible to view in it i guess :(
Anyway I asked about it in "Platforms/Win progs" section so lets see if anyone replies.
gopikrishAuthor Commented:
But when I open Policytool.exe it says Error Could not find policy File C:\WINDOWS\.java.policy
But my policy file is in D:\java\bin
But another program didnt had any problems in displaying a .gif image in applet.I mean same error occured but I granted Read and Execute to all files and I was able to display that image.
CEHJCommented:
Writing is quite different - go through the process again carefully - that is where your problem lies
gopikrishAuthor Commented:
Hmm but Can you try my above code and check if you are getting any errors in it or able to successfully write to a file? So that if there are no errors in that code then maybe Policyfile settings should be wrong.And what did you meant by carefully go through the process.I mean which process?
CEHJCommented:
The only errors I get are security ones, although, as I mentioned before, you don't close your file, so even if there were no security errors, it wouldn't write to the file. Close it in a finally block.

>>I mean which process?

The process of doing the security settings
gopikrishAuthor Commented:
Sorry how to close a file?
CEHJCommented:
              RandomAccessFile logfile = null;
               try
               {
                    logfile = new RandomAccessFile("D:\\java\\bin\\Customer.txt","rw");
                    logfile.seek(logfile.length());
                    logfile.writeBytes(entry);

               }

               catch(IOException e)
               {
                    showStatus("Cannot write on to the log file"+e);
               }
               finally
               {
                         try { logfile.close(); } catch(IOException e) { /* ignore */ }
               }
gopikrishAuthor Commented:
I did but still same errors are occuring :(
CEHJCommented:
Save the following into the same directory as the applet as

.java.policy

and then start the appletviewer with:

appletviewer -J-Djava.security.policy=./.java.policy Login.java

grant codeBase "file:/C:/java/dumpit/-"
{
      permission java.io.FilePermission "customer.txt", "read";
      permission java.io.FilePermission "customer.txt", "write";
};      
   

Obviously, you're going to have to change the urls appropriately. You shouldn't have data/code in your Java bin directory btw

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
gopikrishAuthor Commented:
So I have my Login.java in the directory "D:\java\bin"
So is the following code correct for .java.policy file?
 
grant codeBase "file:/D:/java/bin/-"
{
     permission java.io.FilePermission "customer.txt", "read";
     permission java.io.FilePermission "customer.txt", "write";
};    

And what do you mean by "You shouldn't have data/code in your Java bin " ?
   


CEHJCommented:
>>And what do you mean by "You shouldn't have data/code in your Java bin " ?

You shouldn't put data and code in there.

The code is right if customer.txt is in the same directory
gopikrishAuthor Commented:
Well I also tried with "Customer.txt" in the directory
C:\Program Files\Java\j2re1.4.2_01\bin
and creating .java.policy file in "D:\java\bin" as follows
 grant codeBase "file:/C:/Program Files/java/j2re1.4.2_01/bin/-"
{
     permission java.io.FilePermission "customer.txt", "read";
     permission java.io.FilePermission "customer.txt", "write";
};    
  Then started appletviewer from "D:\java\bin" as follows
 appletviewer -J-Djava.security.policy=./.java.policy Login.java
But still the same problem.


Mick BarryJava DeveloperCommented:
Change your catch so you can see the error:

               catch(Exception e)
               {
                    showStatus("Cannot write on to the log file"+e);
               }
gopikrishAuthor Commented:
Yes in the status bar of the applet the following error is being displayed--
Cannot write on to the log filejava.security.AccessControlException: access denied (java.io.FilePermission D:\Java\bin\Customer.txt write)
 So what to do?
Mick BarryJava DeveloperCommented:
try:

grant codeBase "file:/D:/java/bin/-"
{
     permission java.io.FilePermission "Customer.txt", "read";
     permission java.io.FilePermission "Customer.txt", "write";
};    
gopikrishAuthor Commented:
Ah Thanks now I'am able to.Actually the problem was I did "customer.txt" instead of "Customer.txt" in that grant codeBase as CEHJ did above :) Thanks objects also.
CEHJCommented:
>>Actually the problem was I did "customer.txt" instead of "Customer.txt" in that grant codeBase as CEHJ did above

It doesn't actually make any difference on Windows (certainly on Win2K)
gopikrishAuthor Commented:
Yes it CEHJ ! That was the problem actually.When I changed that it started working :)
CEHJCommented:
Worked for me either way. Maybe the file had been cached in some way
CEHJCommented:
Just checked. My file is called customer.txt

      permission java.io.FilePermission "Customer.txt", "read";
      permission java.io.FilePermission "Customer.txt", "write";


and

      permission java.io.FilePermission "customer.txt", "read";
      permission java.io.FilePermission "customer.txt", "write";

work equally well.
gopikrishAuthor Commented:
ok :)
Mick BarryJava DeveloperCommented:
> Actually the problem was I did "customer.txt" instead of "Customer.txt"

No the problemn was with the specification of directory.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.