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?
 
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
0
 
CEHJCommented:
Please post errors
0
 
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?
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
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
0
 
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.
0
 
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
0
 
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.
0
 
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.
0
 
CEHJCommented:
Writing is quite different - go through the process again carefully - that is where your problem lies
0
 
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?
0
 
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
0
 
gopikrishAuthor Commented:
Sorry how to close a file?
0
 
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 */ }
               }
0
 
gopikrishAuthor Commented:
I did but still same errors are occuring :(
0
 
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 " ?
   


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


0
 
objectsCommented:
Change your catch so you can see the error:

               catch(Exception e)
               {
                    showStatus("Cannot write on to the log file"+e);
               }
0
 
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?
0
 
objectsCommented:
try:

grant codeBase "file:/D:/java/bin/-"
{
     permission java.io.FilePermission "Customer.txt", "read";
     permission java.io.FilePermission "Customer.txt", "write";
};    
0
 
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.
0
 
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)
0
 
gopikrishAuthor Commented:
Yes it CEHJ ! That was the problem actually.When I changed that it started working :)
0
 
CEHJCommented:
Worked for me either way. Maybe the file had been cached in some way
0
 
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.
0
 
gopikrishAuthor Commented:
ok :)
0
 
objectsCommented:
> Actually the problem was I did "customer.txt" instead of "Customer.txt"

No the problemn was with the specification of directory.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.