Solved

about changeing a word in one file into another word

Posted on 2003-12-06
10
261 Views
Last Modified: 2012-05-04
hello,

i'm trying to learn io stuff in JAVA right now..
and i don't know how to do this..

right now..i have one file which has this structure
---------------------------------------
http://www.yahoo.com/0.gif
http://www.yahoo.com/10.gif
http://www.yahoo.com/20.gif
http://www.yahoo.com/30.gif
http://www.yahoo.com/40.gif
http://www.yahoo.com/50.gif
http://www.yahoo.com/60.gif
http://www.yahoo.com/70.gif
http://www.yahoo.com/80.gif
http://www.yahoo.com/90.gif
http://www.yahoo.com/100.gif
http://www.yahoo.com/110.gif
http://www.yahoo.com/120.gif
http://www.yahoo.com/130.gif
http://www.yahoo.com/140.gif
http://www.yahoo.com/150.gif
http://www.yahoo.com/160.gif
http://www.yahoo.com/170.gif
---------------------------------------------------

i call this file "log1.txt"

i want to transform the word "http" into "BAD"

i then tried the following code

---------------------

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class io3
{
      
      public static void main(String args[])
      {
            try {
                  
            boolean eof = false;
            int count = 0;
            int a =0;
            
            System.out.println("This is a book\n");
            System.out.println("This is a book\n");

            FileReader in = new FileReader("c:/log1.txt");
            
            FileWriter out = new FileWriter("c:/log1.txt");
            
            while(!eof)
            {
                  int input = in.read();
                  System.out.println((char)input + " ");
            
                  if((char)input == "http://")
                  {
                        out.write("BAD\n");
                  }
                  else
                  {
                        out.write("GOOD\n");
                  }
                              

                  if(input == -1)
                        eof = true;
                  else
                        count++;
            }            
            
            
            out.close();
            in.close();
            
            
            }
            catch(IOException e)
            {
                  System.out.println("Error : " + e.toString());
            }
      }
}

--------------------------------------------

but there is one error on this line
-----------------------------------
if((char)input == "http://")
------------------------------------


which i don't know how to correct it..and i don't think i have the right code to satisfy mu purpose..

anybody can help me

another problem

what's "static" in java
i don't really understand...this one meaning..
can i have some example or anythign that can make me undetrstand 'static"??

Thxx
Tom
0
Comment
Question by:tom_mk
  • 5
  • 3
  • 2
10 Comments
 
LVL 92

Expert Comment

by:objects
ID: 9889965
you need to write the new content to a second file, and replace the existing file once you are done.
0
 
LVL 15

Expert Comment

by:jimmack
ID: 9890001
Have a look at the replace method in the String object (the one that takes regular expressions).
0
 
LVL 92

Expert Comment

by:objects
ID: 9890009
try using a BufferedReader to read the file line by line:

String line = null;
while (null!=(line=in.readLine()))
{
   ...
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!

 
LVL 15

Expert Comment

by:jimmack
ID: 9890037
I missed the last part of your question before.

There are a couple of uses for static.  A static method or static variable in a class can be accessed without needing a instance (object) to be created.  One good example of a static methods is the "main" method in your applications, which is accessed without actually creating an instance of your class.  This is why you can't access instance variables from the main method, no object exists.  Another good example are the methods in the Math class (eg. Math.abs()).  You don't need to create an instance of a Math object in order to access these methods.

If you make an attribute static, then one instance of that variable exists for the class (this is sometimes referred to as a class variable).  An example of the use of a class variable would be if you wanted a count of instances created.  A normal (non static) instance variable would be no use because a new one would be created for each object, but with a static, you could increment this within the constructor.

The other use of static is to execute some code in a class when the class is loaded.  This may be used to initialise complex variables that are also static.  To do this, you would do:

public class MyClass
{
    static
    {
        // Code that is executed when class is loaded
    }

    .
    .
}
0
 

Author Comment

by:tom_mk
ID: 9890234
about

bufferedreader

how can i access the word inside the line if i use bufferedreader to access my file line by line la?

Thx
Tom


btw
jimmack
i'm not that sure that i understand ur explanation much..can u post some example of code?

Thxx
0
 
LVL 15

Expert Comment

by:jimmack
ID: 9890259
If you follow objects code, "line" is a String that is available inside the while loop.

Sorry, "replace" was a typo (and a bad one too :-( it could have got very confusing).  It should have been replaceAll or replaceFirst, as in the following example:

line = line.replaceAll("http", "BAD");  // You could use replaceFirst() if you expect the http string to occur again.
0
 
LVL 92

Expert Comment

by:objects
ID: 9890278
i was a bit confused on your actual requirements, you said you wanted to replace "http" with "BAD" but your code appears to be trying to do something different.
What exactly is the transformation you require?
0
 
LVL 15

Accepted Solution

by:
jimmack earned 500 total points
ID: 9890306
Certainly :

 if((char)input == "http://")

should be either:

  if (input.startsWith("http://"))  // only lines that begin with http://

or

  if (input.indexOf("http://") != -1)  // lines that contain http:// anywhere

Sorry, because I originally saw that objects had answered the bit about reading the file, I hadn't looked at the code properly :-(
0
 

Author Comment

by:tom_mk
ID: 9890536
thx jimmack

btw ..what does indexOf do?
is it try to find whereever the word be in the line?

Thx
0
 
LVL 15

Expert Comment

by:jimmack
ID: 9891585
>> is it try to find whereever the word be in the line?

Yes, eg:

String line = "This is a sentence";
System.out.println(line.indexOf("is"));  // would ouput 5
System.out.println(line.indexOf("x")); // would output -1
0

Featured Post

Technology Partners: 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!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
arguments to jar 5 39
hibernate jars 4 57
Tomcat: Unable to run tomcat service. 2 28
How to execute a Python program and gather return output in Java 2 49
Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
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…
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 …
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

713 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