Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Cant write to a RandomAccessFile?

Posted on 2003-11-22
27
Medium Priority
?
325 Views
Last Modified: 2010-03-31
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.
0
Comment
Question by:gopikrish
  • 13
  • 11
  • 3
27 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 9802588
Please post errors
0
 

Author Comment

by:gopikrish
ID: 9802639
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
 
LVL 86

Expert Comment

by:CEHJ
ID: 9802694
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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:gopikrish
ID: 9802740
       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
 
LVL 86

Expert Comment

by:CEHJ
ID: 9802749
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
 

Author Comment

by:gopikrish
ID: 9803035
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
 

Author Comment

by:gopikrish
ID: 9803069
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
 
LVL 86

Expert Comment

by:CEHJ
ID: 9803136
Writing is quite different - go through the process again carefully - that is where your problem lies
0
 

Author Comment

by:gopikrish
ID: 9803427
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
 
LVL 86

Expert Comment

by:CEHJ
ID: 9803440
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
 

Author Comment

by:gopikrish
ID: 9803506
Sorry how to close a file?
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9803530
              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
 

Author Comment

by:gopikrish
ID: 9803642
I did but still same errors are occuring :(
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 200 total points
ID: 9803703
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
 

Author Comment

by:gopikrish
ID: 9803798
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
 
LVL 86

Expert Comment

by:CEHJ
ID: 9803824
>>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
 

Author Comment

by:gopikrish
ID: 9805063
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
 
LVL 92

Expert Comment

by:objects
ID: 9805206
Change your catch so you can see the error:

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

Author Comment

by:gopikrish
ID: 9805691
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
 
LVL 92

Expert Comment

by:objects
ID: 9807020
try:

grant codeBase "file:/D:/java/bin/-"
{
     permission java.io.FilePermission "Customer.txt", "read";
     permission java.io.FilePermission "Customer.txt", "write";
};    
0
 

Author Comment

by:gopikrish
ID: 9809515
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
 
LVL 86

Expert Comment

by:CEHJ
ID: 9810004
>>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
 

Author Comment

by:gopikrish
ID: 9811916
Yes it CEHJ ! That was the problem actually.When I changed that it started working :)
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9812380
Worked for me either way. Maybe the file had been cached in some way
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9812429
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
 

Author Comment

by:gopikrish
ID: 9812825
ok :)
0
 
LVL 92

Expert Comment

by:objects
ID: 9814183
> Actually the problem was I did "customer.txt" instead of "Customer.txt"

No the problemn was with the specification of directory.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Viewers learn about the third conditional statement “else if” and use it in an example program. Then additional information about conditional statements is provided, covering the topic thoroughly. Viewers learn about the third conditional statement …
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
Suggested Courses

773 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