Delete a file: Difference between revisions

From Rosetta Code
Content added Content deleted
m (→‎[[#ALGOL 68]]: fix typo)
(added Fortran)
Line 75: Line 75:
s" /input.txt" delete-file throw
s" /input.txt" delete-file throw


=={{header|Fortran}}==
{{works with|Fortran|90 and later}}
I don't know a way of deleting directories in Fortran
OPEN (UNIT=5, FILE="input.txt", STATUS="OLD") ! Current directory
CLOSE (UNIT=5, STATUS="DELETE")
OPEN (UNIT=5, FILE="/input.txt", STATUS="OLD") ! Root directory
CLOSE (UNIT=5, STATUS="DELETE")
=={{header|Haskell}}==
=={{header|Haskell}}==



Revision as of 16:05, 21 October 2008

Task
Delete a file
You are encouraged to solve this task according to the task description, using any language you may know.

In this task, the job is to delete a file called "input.txt" and delete a directory called "docs". This should be done twice: once "here", i.e. in the current working directory and once in the filesystem root.

ALGOL 68

Note: scratch does not appear to do anything on ALGOL 68G. Also note that file names are Operating System dependent.

main:(
  PROC remove = (STRING file name)INT: 
  BEGIN
    FILE actual file;
    INT errno = open(actual file, file name, stand back channel);
    IF errno NE 0 THEN stop remove FI;
    scratch(actual file); # detach the book and burn it #
    errno
  EXIT
  stop remove:
      errno
  END;
  remove("input.txt");
  remove("/input.txt");
  remove("docs");
  remove("/docs")
)

C

ISO C: <c>#include <stdio.h>

int main() {

 remove("input.txt");
 remove("/input.txt");
 remove("docs");
 remove("/docs");
 return 0;

}</c>

POSIX: <c>#include <unistd.h>

int main() {

 unlink("input.txt");
 unlink("/input.txt");
 rmdir("docs");
 rmdir("/docs");
 return 0;

}</c>

D

Library: Tango

<d>import tango.io.Path;

void main() {

   remove("input.txt");
   remove("/input.txt");
   remove("docs");
   remove("/docs");

}</d>

Library: Tango

POSIX: <d>import tango.stdc.posix.unistd;

void main() {

 unlink("input.txt");
 unlink("/input.txt");
 rmdir("docs");
 rmdir("/docs");

}</d>

Forth

There is no means to delete directories in ANS Forth.

 s" input.txt" delete-file throw
s" /input.txt" delete-file throw

Fortran

Works with: Fortran version 90 and later

I don't know a way of deleting directories in Fortran

OPEN (UNIT=5, FILE="input.txt", STATUS="OLD")   ! Current directory
CLOSE (UNIT=5, STATUS="DELETE")
OPEN (UNIT=5, FILE="/input.txt", STATUS="OLD")  ! Root directory
CLOSE (UNIT=5, STATUS="DELETE")

Haskell

import System.IO
import System.Directory

main = do
  removeFile "output.txt"
  removeDirectory "docs"
  removeFile "/output.txt"
  removeDirectory "/docs"

Io

Directory fileNamed("input.txt") remove
Directory directoryNamed("docs") remove
RootDir := Directory clone setPath("/")
RootDir fileNamed("input.txt") remove
RootDir directoryNamed("docs") remove

Java

<java>import java.util.File; public class FileDeleteTest {

  public static boolean deleteFile(String filename) {
      boolean exists = new File(filename).delete();
      return exists;
  }
  public static void test(String type, String filename) {
      System.out.println("The following " + type + " called " + filename + 
          (deleteFile(filename) ? " was deleted." : " could not be deleted.")
      );
  }
  public static void main(String args[]) {
       test("file", "input.txt");
       test("file", File.seperator + "input.txt");
       test("directory", "docs");
       test("directory", File.seperator + "docs" + File.seperator);
  }

}</java>

MAXScript

There's no way to delete folders in MAXScript

-- Here
deleteFile "input.txt"
-- Root
deleteFile "\input.txt"

OCaml

<ocaml>Sys.remove "input.txt";; Sys.remove "/input.txt";;</ocaml>

with the Unix library: <ocaml>#load "unix.cma";; Unix.unlink "input.txt";; Unix.unlink "/input.txt";; Unix.rmdir "docs";; Unix.rmdir "/docs";;</ocaml>

Perl

<perl>use File::Spec::Functions qw(catfile rootdir);

  1. here

unlink 'input.txt'; rmdir 'docs';

  1. root dir

unlink catfile rootdir, 'input.txt'; rmdir catfile rootdir, 'docs';</perl>

Without Perl Modules

Current directory

perl -e 'unlink input.txt'
perl -e 'rmdir docs'

Root Directory

perl -e 'unlink "/input.txt"'
perl -e 'rmdir "/docs"'

PowerShell

Delete-Item input.txt
# Can also use the del alias for the Delete-Item cmdlet
del input.txt


Python

<python>import os

  1. current directory

os.remove("output.txt") os.rmdir("docs")

  1. root directory

os.remove("/output.txt") os.rmdir("/docs")</python>

Raven

'input.txt'  delete
'/input.txt' delete
'docs'  rmdir
'/docs' rmdir

Ruby

 #!/usr/bin/env ruby
 File.delete("output.txt", "/output.txt")
 Dir.delete("docs")
 Dir.delete("/docs")

Toka

 needs shell
 " docs" remove
 " input.txt" remove

UNIX Shell

rm -rf docs
rm input.txt
rm -rf /docs
rm /input.txt

Visual Basic .NET

Platform: .NET

Works with: Visual Basic .NET version 9.0+
'Current Directory
IO.Directory.Delete("docs")
IO.Directory.Delete("docs", True) 'also delete files and sub-directories
IO.File.Delete("output.txt")

'Root
IO.Directory.Delete("\docs")
IO.File.Delete("\output.txt")

'Root, platform independent
IO.Directory.Delete(IO.Path.DirectorySeparatorChar & "docs")
IO.File.Delete(IO.Path.DirectorySeparatorChar & "output.txt")