From 4da2aaaa99f1e47e446f540b974858b2ff8a8b28 Mon Sep 17 00:00:00 2001 From: Philip Sampaio Date: Thu, 3 May 2012 00:46:48 -0300 Subject: [PATCH] Add File.exists? --- lib/file.ex | 15 +++++++++++++++ test/elixir/file_test.exs | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/lib/file.ex b/lib/file.ex index 913f64633b..bbb2e165bb 100644 --- a/lib/file.ex +++ b/lib/file.ex @@ -28,6 +28,21 @@ defmodule File do FL.is_dir(directory) end + @doc """ + Returns if `file` exists + + ## Examples + + File.exists?("/tmp") + #=> true + + File.exists?("missing.txt") + #=> false + """ + def exists?(filename) do + is_tuple(FL.last_modified(filename)) + end + @doc """ Returns the last component of the `filename` or the file name itself if it does not contain any directory separators. diff --git a/test/elixir/file_test.exs b/test/elixir/file_test.exs index 362de53e7e..7f7977639b 100644 --- a/test/elixir/file_test.exs +++ b/test/elixir/file_test.exs @@ -32,6 +32,14 @@ defmodule FileTest do refute File.regular?("#{__FILE__}.unknown") end + test :exists do + assert File.exists?(__FILE__) + assert File.exists?(File.expand_path("../fixtures/foo.txt", __FILE__)) + + refute File.exists?("fixtures/missing.txt") + refute File.exists?("_missing.txt") + end + test :basename_with_binary do assert File.basename("foo") == "foo" assert File.basename("/foo/bar") == "bar"