import "Prelude" import "Stream" import "Vector" importJava "java.io.File" where data File @JavaName "" file :: String -> File @JavaName "" childFile :: File -> String -> File @JavaName "getName" nameOfFile :: File -> String @JavaName "getPath" pathOfFile :: File -> String @JavaName "getAbsolutePath" cwd :: File -> String @JavaName "getParent" parentFile :: File -> String @JavaName exists fileExists :: File -> Boolean @JavaName createNewFile createFile :: File -> () @JavaName length sizeOfFile :: File -> Long @JavaName createTempFile createTempFile :: String -> String -> Maybe File -> File @JavaName deleteOnExit deleteFileOnExit :: File -> () @JavaName delete deleteFile :: File -> () @JavaName mkdirs makeDirs :: File -> Boolean isFile :: File -> Boolean isDirectory :: File -> Boolean @private @JavaName listFiles listMaybeFiles :: File -> Maybe (Vector File) listFiles :: File -> 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 -> () moveFile :: File -> File -> () syncFile :: File -> () createTempDirectory :: String -> Maybe File -> File pwd :: () -> String pwd () = cwd (file "") instance Show File where show = pathOfFile importJava "java.io.FileInputStream" where @private @JavaName "" openFileForReading :: File -> InputStream instance Readable File where openForReading = openFileForReading importJava "java.io.FileOutputStream" where @private @JavaName "" openFileForWriting :: File -> OutputStream instance Writable File where openForWriting = openFileForWriting