Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Cant write to a RandomAccessFile?

Posted on 2003-11-22
27
Medium Priority
?
324 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
The top UI technologies you need to be aware of

An important part of the job as a front-end developer is to stay up to date and in contact with new tools, trends and workflows. That’s why you cannot miss this upcoming webinar to explore the latest trends in UI technologies!

 

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

The top UI technologies you need to be aware of

An important part of the job as a front-end developer is to stay up to date and in contact with new tools, trends and workflows. That’s why you cannot miss this upcoming webinar to explore the latest trends in UI technologies!

Question has a verified solution.

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

Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
Suggested Courses

670 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