Initial work
diff --git a/libraries/stdlib/jvm/src/kotlin/io/Exceptions.kt b/libraries/stdlib/jvm/src/kotlin/io/Exceptions.kt
index a83fc4b..70456ac 100644
--- a/libraries/stdlib/jvm/src/kotlin/io/Exceptions.kt
+++ b/libraries/stdlib/jvm/src/kotlin/io/Exceptions.kt
@@ -25,6 +25,7 @@
  * @property other the second file involved in the operation, if any (for example, the target of a copy or move)
  * @property reason the description of the error
  */
+@Deprecated("", level = DeprecationLevel.ERROR)
 open public class FileSystemException(
     public val file: File,
     public val other: File? = null,
@@ -34,27 +35,30 @@
 /**
  * An exception class which is used when some file to create or copy to already exists.
  */
-public class FileAlreadyExistsException(
+@Deprecated("", level = DeprecationLevel.ERROR)
+public open class FileAlreadyExistsException(
     file: File,
     other: File? = null,
     reason: String? = null
-) : FileSystemException(file, other, reason)
+) : kotlin.io.exceptions.FileSystemException(file, other, reason)
 
 /**
  * An exception class which is used when we have not enough access for some operation.
  */
-public class AccessDeniedException(
+@Deprecated("", level = DeprecationLevel.ERROR)
+public open class AccessDeniedException(
     file: File,
     other: File? = null,
     reason: String? = null
-) : FileSystemException(file, other, reason)
+) : kotlin.io.exceptions.FileSystemException(file, other, reason)
 
 /**
  * An exception class which is used when file to copy does not exist.
  */
-public class NoSuchFileException(
+@Deprecated("", level = DeprecationLevel.ERROR)
+public open class NoSuchFileException(
     file: File,
     other: File? = null,
     reason: String? = null
-) : FileSystemException(file, other, reason)
+) : kotlin.io.exceptions.FileSystemException(file, other, reason)
 
diff --git a/libraries/stdlib/jvm/src/kotlin/io/files/Exceptions.kt b/libraries/stdlib/jvm/src/kotlin/io/files/Exceptions.kt
new file mode 100644
index 0000000..7800635
--- /dev/null
+++ b/libraries/stdlib/jvm/src/kotlin/io/files/Exceptions.kt
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package kotlin.io.exceptions
+
+import java.io.File
+
+/**
+ * A base exception class for file system exceptions.
+ * @property file the file on which the failed operation was performed.
+ * @property other the second file involved in the operation, if any (for example, the target of a copy or move)
+ * @property reason the description of the error
+ */
+@Suppress("DEPRECATION_ERROR")
+open public class FileSystemException(
+    file: File,
+    other: File? = null,
+    reason: String? = null
+) : kotlin.io.FileSystemException(file, other, reason)
+
+/**
+ * An exception class which is used when some file to create or copy to already exists.
+ */
+@Suppress("DEPRECATION_ERROR")
+public class FileAlreadyExistsException(
+    file: File,
+    other: File? = null,
+    reason: String? = null
+) : kotlin.io.FileAlreadyExistsException(file, other, reason)
+
+/**
+ * An exception class which is used when we have not enough access for some operation.
+ */
+@Suppress("DEPRECATION_ERROR")
+public class AccessDeniedException(
+    file: File,
+    other: File? = null,
+    reason: String? = null
+) : kotlin.io.AccessDeniedException(file, other, reason)
+
+/**
+ * An exception class which is used when file to copy does not exist.
+ */
+@Suppress("DEPRECATION_ERROR")
+public class NoSuchFileException(
+    file: File,
+    other: File? = null,
+    reason: String? = null
+) : kotlin.io.NoSuchFileException(file, other, reason)
+
diff --git a/libraries/stdlib/jvm/src/kotlin/io/files/FileTreeWalk.kt b/libraries/stdlib/jvm/src/kotlin/io/files/FileTreeWalk.kt
index 58bb360..bfeeb93 100644
--- a/libraries/stdlib/jvm/src/kotlin/io/files/FileTreeWalk.kt
+++ b/libraries/stdlib/jvm/src/kotlin/io/files/FileTreeWalk.kt
@@ -11,6 +11,7 @@
 import java.io.File
 import java.io.IOException
 import java.util.ArrayDeque
+import kotlin.io.exceptions.AccessDeniedException
 
 /**
  * An enumeration to describe possible walk directions.
diff --git a/libraries/stdlib/jvm/src/kotlin/io/files/Utils.kt b/libraries/stdlib/jvm/src/kotlin/io/files/Utils.kt
index c376916..19e7484 100644
--- a/libraries/stdlib/jvm/src/kotlin/io/files/Utils.kt
+++ b/libraries/stdlib/jvm/src/kotlin/io/files/Utils.kt
@@ -10,6 +10,9 @@
 
 import java.io.File
 import java.io.IOException
+import kotlin.io.exceptions.FileSystemException
+import kotlin.io.exceptions.NoSuchFileException
+import kotlin.io.exceptions.FileAlreadyExistsException
 
 /**
  * Creates an empty directory in the specified [directory], using the given [prefix] and [suffix] to generate its name.
diff --git a/libraries/stdlib/jvm/test/io/Files.kt b/libraries/stdlib/jvm/test/io/Files.kt
index a5db296..c8ce290 100644
--- a/libraries/stdlib/jvm/test/io/Files.kt
+++ b/libraries/stdlib/jvm/test/io/Files.kt
@@ -430,6 +430,7 @@
         }
     }
 
+    @Suppress("DEPRECATION_ERROR")
     @Test fun testCopyTo() {
         val srcFile = @Suppress("DEPRECATION") createTempFile()
         val dstFile = @Suppress("DEPRECATION") createTempFile()
@@ -567,7 +568,7 @@
         }
     }
 
-    @Suppress("DEPRECATION")
+    @Suppress("DEPRECATION", "DEPRECATION_ERROR")
     @Test fun copyRecursively() {
         val src = createTempDir()
         val dst = createTempDir()