Knowing when a file writting has ended

Posted on 2000-05-09
Medium Priority
Last Modified: 2013-12-16

I am writting to a file, from a java application.
The file is big so multiple flush will occur during the writting. That file will be used by another application(Cold Fusion), that will read it and do it's job. What I need is a way of letting the ColdFusion alllication know that the writting to the file has finished and the file is ready for use.
I know I could read the file from ColdFusion and check for something at the end that will tell me the file is OK, but the file is big. I am looking for some suggestions.
Question by:simi

Expert Comment

ID: 2794308
how about creating a second file as a "flag" to coldfusion?
so at the end of your large file write activity you could just write another tiny file... meanwhile coldfusion could wait in a loop until that "flag" file exists

Author Comment

ID: 2794334
That's one of the solutions I had in mind, together with another one that is, reading the date when the big file is created, then loop reading the date untill it changed(I have tested writting the file from a java application and the date is changed only when I close the stream to the file. Flushing the buffer does not change the date, even if it does write to the file.
Sorry, I should have posted all that from the begining.
So what I am looking for is if someone has some other solution that would work better, or if someone can see some problems with the ones I have allready presented.

Expert Comment

ID: 2794434
what don't you like about that solution?  
i don't know what kind of support for sockets cold fusion has but you could open a socket between the two apps to communicate
files and sockets are the most common ways of communicating between processes... although i'm sure there are others as well
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.


Author Comment

ID: 2794594
Is not something that I particulary don't like, but more that the project manager was suggesting of a more elegant solution, and I wanted to see if there are any ideeas.

I can't use sockets now, it'll have to be a file that I read.
Thanks anyway.
LVL 19

Expert Comment

by:Jim Cakalic
ID: 2796339
What is the relationship between the ColdFusion application and the Java application?

If the ColdFusion app is the parent of the Java app and it tells its child process the name of the file to write, perhaps you could do something like write to a temporary filename from the Java app and then rename to the agreed upon final file when done. The ColdFusion app could wait until the name file appears at which point it would be complete. The hole in this is, what to do if something catastrophic occurs to the Java app and the file never appears? Can the ColdFusion app know when its child terminates? Using this indication along with or instead of the temporary file scheme could round out the solution.

Best regards,
Jim Cakalic

Accepted Solution

Dain_Anderson earned 200 total points
ID: 2830974
Here is a very simple technique to see if the file is in use. By trying to rename the file, you will get an error since the file is being written to, at which point it is read-only.

So, in ColdFusion, use:

    <CFFILE ACTION="Rename"
    <CFFILE ACTION="Rename"
    <CFCATCH TYPE="Any">
        File is in use -- try again later.

This takes exactly 4 milliseconds to process, so you can see it's quite efficient.

Hope that helps

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

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.

Join & Write a Comment

This article provides a case study on how our local youth baseball league deployed a new website, including the platform selection, implementation and benefits to the league.
Geo-targeting is the practice of distributing content based on a person’s location, as best as you can determine it. Let’s look at some ways you could successfully use this tactic. The following tips and case studies could lead to meaningful results.
The purpose of this video is to demonstrate how to reset a WordPress password if you are locked out and cannot reset the password. A typical use would be if you cannot access the email to which WordPress would send the password recovery email to…
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.
Suggested Courses

624 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