Solved

Removing a line from file

Posted on 2004-10-04
11
192 Views
Last Modified: 2010-03-31
If I have a file named book.java

and it contains:

book1
book2
book3

now I want to remove book2 so that there's no blank line:

book1
book3

how can I do that? Thanks!
0
Comment
Question by:izomax
11 Comments
 
LVL 92

Expert Comment

by:objects
Comment Utility
you'll have to create a new file and write the lines you want to save to the new file and then once done replace the existing file with the new one

0
 

Author Comment

by:izomax
Comment Utility
Does that mean I have to use RandomAccessFile?
0
 
LVL 92

Expert Comment

by:objects
Comment Utility
No RAF won't help, it only allow you to overwrite data.
It doesn't let you remove data, or insert data.
0
 
LVL 3

Expert Comment

by:CI-Ia0s
Comment Utility
No. You'll have to read in all the data, cut out what you don't want, and then output the whole string. Note, if you want to keep your line breaks, use BufferedReader.readLine() and append a "\n" to each line read in. To cut out the data:
int cutPoint = wholeString.indexOf(String stringToCut);
finalString = wholeString.substring(0, cutPoint) + wholeString.substring((cutPoint + 1), wholeString.length());

Then just output finalString to the file (make sure to overwrite).
0
 
LVL 3

Expert Comment

by:CI-Ia0s
Comment Utility
Errr... Oops. Don't declare the stringToCut in the indexOf...

This:
int cutPoint = wholeString.indexOf(String stringToCut);
should be this:
int cutPoint = wholeString.indexOf(stringToCut);

Oh, and add in after that line:
if (cutPoint == -1){//Error message followed by System.exit(0) or something as a value of -1 will screw up the substring
}

P.S. I assume that all the strings I used were declared earlier. If not, declare them, i.e. String finalString...
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 5

Expert Comment

by:Naeemg
Comment Utility
use this code. As u've to replace "book2" value with "" empty. and also u've to remove leading new line "\n" char. U'll get ur desired result. Try this code.

    String thisText = "book1\nbook2\nbook3";
    String strRemove = "book2";
    String result = "";
    result = thisText.replaceAll("\n" + strRemove,"");
    System.out.println(thisText);
    System.out.println(result);


bye,
Naeem Shehzad Ghuman
0
 
LVL 3

Accepted Solution

by:
CI-Ia0s earned 500 total points
Comment Utility
Gah, I just realized another small bug with my code; here's the correct version:

int cutPoint = wholeString.indexOf(stringToCut);
finalString = wholeString.substring(0, cutPoint) + wholeString.substring((cutPoint + cutPoint.length()), wholeString.length());

Note that since you append "\n" to your inputs (demoed below) you'll need to include "\n" at the end of stringToCut. Now, input:

String wholeString = "";
try{
BufferedReader streamIn = new BufferedReader(new FileReader("fileName.txt"));
String inString = "";
while (inString != null){
wholeString = wholeString + inString + "\n";
inString = streamIn.readLine();
}
catch (Exception e){
System.out.println("Bad file input.");
System.exit(1);
}
0
 
LVL 92

Expert Comment

by:objects
Comment Utility
File f = new File("book.java");
File newf = new File("book.java.new");
BufferedReader in = new BufferedReader(new FileReader(f));
PrintWriter out = new PrintWriter(new FileWriter(newf));
String line = null;
while (null!=(line=in.readLine()))
{
   if (!line.equals("book2"))
   {
      out.println(line);
   }
}
in.close();
out.close();
f.delete();
newf.renameTo(f);
0
 
LVL 3

Expert Comment

by:CI-Ia0s
Comment Utility
Yea... That'd work too. ;)
0
 
LVL 3

Expert Comment

by:CI-Ia0s
Comment Utility
So you have your pick of 3 methods, izomax...
0
 
LVL 3

Expert Comment

by:CI-Ia0s
Comment Utility
Thank you. :)
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
This video teaches viewers about errors in exception handling.
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.

743 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

17 Experts available now in Live!

Get 1:1 Help Now