   """
   @spec touch!(Path.t, :calendar.datetime) :: :ok | no_return
   def touch!(path, time \\ :calendar.local_time) do
-    path = IO.chardata_to_string(path)
     case touch(path, time) do
       :ok -> :ok
       {:error, reason} ->
-        raise File.Error, reason: reason, action: "touch", path: path
+        raise File.Error, reason: reason, action: "touch",
+          path: IO.chardata_to_string(path)
     end
   end
 

  """
  @spec mkdir!(Path.t) :: :ok | no_return
  def mkdir!(path) do
    path = IO.chardata_to_string(path)
    case mkdir(path) do
      :ok -> :ok
      {:error, reason} ->
        raise File.Error, reason: reason, action: "make directory", path: path
    end
  end


  """
  @spec ls!(Path.t) :: [binary] | no_return
  def ls!(path \\ ".") do
    case ls(path) do
      {:ok, value} -> value
      {:error, reason} ->
        raise File.Error, reason: reason, action: "list directory",
          path: IO.chardata_to_string(path)
    end
  end

