diff --git a/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/Messages.java b/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/Messages.java
index e821bc1..4832c68 100644
--- a/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/Messages.java
+++ b/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/Messages.java
@@ -28,6 +28,7 @@
 	public static String deleteProblem;
 	public static String deleting;
 	public static String failedCreateWrongType;
+	public static String failedCreateAccessDenied;
 	public static String failedMove;
 	public static String failedReadDuringWrite;
 	public static String fileExists;
diff --git a/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/LocalFile.java b/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/LocalFile.java
index 207db1a..47ff69d 100644
--- a/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/LocalFile.java
+++ b/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/LocalFile.java
@@ -96,22 +96,6 @@
 		}
 	}
 
-	/**
-	 * This method is called after a failure to modify a directory.
-	 * Check to see if the target does not exist (e.g. device doesn't not exist) and if so then
-	 * throw an exception with a more specific message and error code.
-	 *
-	 * @param target The directory that we failed to modify
-	 * @param exception The low level exception that occurred, or <code>null</code>
-	 * @throws CoreException A more specific exception if the target does not exist
-	 */
-	private void checkTargetDoesNotExist(File target, Throwable exception) throws CoreException {
-		if (!target.exists()) {
-			String message = NLS.bind(Messages.fileNotFound, target.getAbsolutePath());
-			Policy.error(EFS.ERROR_WRITE, message, exception);
-		}
-	}
-
 	@Override
 	public String[] childNames(int options, IProgressMonitor monitor) {
 		String[] names = file.list();
@@ -327,12 +311,25 @@
 				String message = NLS.bind(Messages.failedCreateWrongType, filePath);
 				Policy.error(EFS.ERROR_WRONG_TYPE, message, e);
 			}
+		} catch (AccessDeniedException e) {
+			if (!file.isDirectory()) {
+				checkReadOnlyParent(file, e);
+				String message = NLS.bind(Messages.failedCreateAccessDenied, filePath);
+				Policy.error(EFS.ERROR_AUTH_FAILED, message, e);
+			}
+		} catch (NoSuchFileException e) {
+			if (!file.isDirectory()) {
+				String parentPath = file.getParent();
+				String message = NLS.bind(Messages.fileNotFound, parentPath != null ? parentPath : filePath);
+				Policy.error(EFS.ERROR_NOT_EXISTS, message, e);
+			}
 		} catch (IOException e) {
-			checkReadOnlyParent(file, e);
-			checkTargetDoesNotExist(file, e);
-			checkTargetIsNotWritable(file, e);
-			String message = NLS.bind(Messages.failedCreateWrongType, filePath);
-			Policy.error(EFS.ERROR_WRONG_TYPE, message, e);
+			if (!file.isDirectory()) {
+				checkReadOnlyParent(file, e);
+				checkTargetIsNotWritable(file, e);
+				String message = NLS.bind(Messages.couldNotWrite, filePath);
+				Policy.error(EFS.ERROR_WRITE, message, e);
+			}
 		}
 		return this;
 	}
diff --git a/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/messages.properties b/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/messages.properties
index 98aca60..64f8602 100644
--- a/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/messages.properties
+++ b/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/messages.properties
@@ -19,6 +19,7 @@
 couldNotWrite = Could not write file: {0}.
 deleteProblem = Problems encountered while deleting files.
 deleting = Deleting: {0}.
+failedCreateAccessDenied=Cannot create file, access denied: {0}.
 failedCreateWrongType=Cannot create file because existing file of wrong type exists: {0}.
 failedMove = Critical failure moving: {0} to: {1}. Content is lost.
 failedReadDuringWrite = Could not read from source when writing file: {0}
diff --git a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/filesystem/CreateDirectoryTest.java b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/filesystem/CreateDirectoryTest.java
index 3a6110c..277d7b5 100644
--- a/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/filesystem/CreateDirectoryTest.java
+++ b/tests/org.eclipse.core.tests.resources/src/org/eclipse/core/tests/filesystem/CreateDirectoryTest.java
@@ -129,7 +129,7 @@
 			fail("1.99");
 		} catch (CoreException e) {
 			assertNotNull("1.1", e.getStatus());
-			assertEquals("1.2", EFS.ERROR_WRITE, e.getStatus().getCode());
+			assertEquals("1.2", EFS.ERROR_NOT_EXISTS, e.getStatus().getCode());
 		}
 	}
 
