Solved

about changeing a word in one file into another word

Posted on 2003-12-06
10
232 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
 
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
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

747 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now