--- /dev/null
+import "Prelude"
+import "Stream"
+import "Vector"
+
+importJava "java.io.File" where
+ data File
+
+ @JavaName "<init>"
+ file :: String -> File
+
+ @JavaName "<init>"
+ childFile :: File -> String -> File
+
+ @JavaName "getPath"
+ pathOfFile :: File -> String
+
+ @JavaName "getAbsolutePath"
+ cwd :: File -> String
+
+ @JavaName "getParent"
+ parentFile :: File -> String
+
+ @JavaName exists
+ fileExists :: File -> <Proc> Boolean
+
+ @JavaName createNewFile
+ createFile :: File -> <Proc> ()
+
+ @JavaName length
+ sizeOfFile :: File -> <Proc> Long
+
+ @JavaName createTempFile
+ createTempFile :: String -> String -> Maybe File -> <Proc> File
+
+ @JavaName deleteOnExit
+ deleteFileOnExit :: File -> <Proc> ()
+
+ @JavaName delete
+ deleteFile :: File -> <Proc> ()
+
+ @JavaName mkdirs
+ makeDirs :: File -> <Proc> Boolean
+
+ isFile :: File -> <Proc> Boolean
+ isDirectory :: File -> <Proc> Boolean
+
+ @private
+ @JavaName listFiles
+ listMaybeFiles :: File -> <Proc> Maybe (Vector File)
+
+listFiles :: File -> <Proc> Vector File
+listFiles filees = do
+ match listMaybeFiles filees with
+ Just (files) -> files
+ Nothing -> vector []
+
+importJava "org.simantics.scl.runtime.io.FileIO" where
+ copyFile :: File -> File -> <Proc> ()
+ moveFile :: File -> File -> <Proc> ()
+ syncFile :: File -> <Proc> ()
+ createTempDirectory :: String -> Maybe File -> <Proc> File
+
+pwd :: () -> String
+pwd () = cwd (file "")
+
+instance Show File where
+ show = pathOfFile
+
+importJava "java.io.FileInputStream" where
+ @private
+ @JavaName "<init>"
+ openFileForReading :: File -> InputStream
+
+instance Readable File where
+ openForReading = openFileForReading
+
+importJava "java.io.FileOutputStream" where
+ @private
+ @JavaName "<init>"
+ openFileForWriting :: File -> OutputStream
+
+instance Writable File where
+ openForWriting = openFileForWriting
\ No newline at end of file