Re: Remove all blank lines from a file

2017-08-31 Thread vino via Digitalmars-d-learn
On Thursday, 31 August 2017 at 15:48:31 UTC, Rene Zwanenburg 
wrote:

On Thursday, 31 August 2017 at 14:44:07 UTC, vino wrote:

Hi All,

  Can some provide me a example of how to remove all blank 
lines from a file.


From,
Vino.B


This one doesn't read the entire file into memory:

import std.stdio;
import std.array;
import std.algorithm;
import std.uni;

void main(string[] args)
{
auto inputFile = File(args[1]);
auto outputFile = File(args[2], "wb");

inputFile
.byLine
.filter!(line => !line.all!isWhite)
.copy(outputFile.lockingTextWriter);
}

But if you want to replace the input file, you'd have to write 
to a temp file, remove the original, then move the temp file.


Hi All,

  Thank you very much, was able to resolve the issue.

From,
Vino.B


Re: Remove all blank lines from a file

2017-08-31 Thread Rene Zwanenburg via Digitalmars-d-learn

On Thursday, 31 August 2017 at 14:44:07 UTC, vino wrote:

Hi All,

  Can some provide me a example of how to remove all blank 
lines from a file.


From,
Vino.B


This one doesn't read the entire file into memory:

import std.stdio;
import std.array;
import std.algorithm;
import std.uni;

void main(string[] args)
{
auto inputFile = File(args[1]);
auto outputFile = File(args[2], "wb");

inputFile
.byLine
.filter!(line => !line.all!isWhite)
.copy(outputFile.lockingTextWriter);
}

But if you want to replace the input file, you'd have to write to 
a temp file, remove the original, then move the temp file.


Re: Remove all blank lines from a file

2017-08-31 Thread Anonymouse via Digitalmars-d-learn

On Thursday, 31 August 2017 at 14:44:07 UTC, vino wrote:

Hi All,

  Can some provide me a example of how to remove all blank 
lines from a file.


From,
Vino.B


Super verbose, but:

import std.stdio;
import std.file;
import std.algorithm.iteration;

enum inFilename = "in.txt";
enum outFilename = "out.txt";

void main()
{
immutable lines = readText(inFilename);

char[] outbuffer;
outbuffer.reserve(lines.length);

foreach (line; lines.splitter("\n"))
{
if (!line.length) continue;

outbuffer ~= line;
outbuffer ~= "\n";
}

auto outfile = File(outFilename, "w");
outfile.write(outbuffer);
}



Re: Remove all blank lines from a file

2017-08-31 Thread Stefan Koch via Digitalmars-d-learn

On Thursday, 31 August 2017 at 14:44:07 UTC, vino wrote:

Hi All,

  Can some provide me a example of how to remove all blank 
lines from a file.


From,
Vino.B


ubyte[] fileData;
ubyte[] writeThis;
uint lastP;

fileData = readRaw(fileName);

foreach(uint p; ubyte b;fileData)
{
if (b == '\n')
{
writeThis ~= fileData[lastP .. p];
lastP = p;
}
}

write(fileName, fileData);