Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 237
  • Last Modified:

Removing a line from file

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
izomax
Asked:
izomax
1 Solution
 
objectsCommented:
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
 
izomaxAuthor Commented:
Does that mean I have to use RandomAccessFile?
0
 
objectsCommented:
No RAF won't help, it only allow you to overwrite data.
It doesn't let you remove data, or insert data.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
CI-Ia0sCommented:
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
 
CI-Ia0sCommented:
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
 
NaeemgCommented:
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
 
CI-Ia0sCommented:
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
 
objectsCommented:
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
 
CI-Ia0sCommented:
Yea... That'd work too. ;)
0
 
CI-Ia0sCommented:
So you have your pick of 3 methods, izomax...
0
 
CI-Ia0sCommented:
Thank you. :)
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!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now