On 03/19/2011 04:51 PM, Andrej Mitrovic wrote:
> I'm trying to do something like the following:
>
> File inputfile;
> foreach (string name; dirEntries(r".\subdir\", SpanMode.shallow))
> {
>      if (!(isFile(name)&&  getExt(name) == "d"))
>      {
>          continue;
>      }
>
>      inputfile = File(name, "a+");
>
>      foreach (line; inputfile.byLine)
>      {
>          if (line == "import foo.d")
>          {
> inputfile.write("import bar.d"); // or ideally `line = "import bar.d"`
>          }
>      }
> }
>
> That obviously won't work. I think I might need to use the `fseek` function to keep track of where I am in the file, or something like that.

That's not a good idea with text files.

Even for binary files, the file must have a well defined format. It is not possible to insert or remove bytes from a file due to low level reasons. The file systems that I am aware of don't provide such interfaces.

And writing after fseek would overwrite existing data.

Like Jonathan M Davis said, the best is to read from the source and write to the destination.

Ali

Reply via email to