/** * primCreateDirectory: fullPath "Create a directory named by the given path. Fail if the path is * bad or if a file or directory by that name already exists." * * <p><primitive: 'primitiveDirectoryCreate' module: 'FilePlugin'> self primitiveFailed */ Object directoryCreate(int argCount) { if (argCount != 1) throw fHandler.primitiveFailed(); SqueakObject fullPath = fHandler.stackNonInteger(0); File directory = new File(fullPath.asString()); if (directory.mkdir()) return fHandler.stackReceiver(argCount); throw fHandler.primitiveFailed(); }
/** * primDeleteFileNamed: aFileName "Delete the file of the given name. Return self if the primitive * succeeds, nil otherwise." * * <p><primitive: 156> ^ nil */ Object fileDelete(int argCount) { if (argCount != 1) throw fHandler.primitiveFailed(); SqueakObject fileName = fHandler.stackNonInteger(0); File file = new File(fileName.asString()); if (file.delete()) return fHandler.stackReceiver(argCount); throw fHandler.primitiveFailed(); }
/** * primitiveRename: oldFileName toBe: newFileName "Rename the file of the given name if it exists, * else fail" <primitive: 159> self halt: 'Attempt to rename a non-existent file, or to use a name * that is already in use'! */ Object fileRename(int argCount) { if (argCount != 2) throw fHandler.primitiveFailed(); SqueakObject oldName = fHandler.stackNonInteger(1); SqueakObject newName = fHandler.stackNonInteger(0); File file = new File(oldName.asString()); if (file.renameTo(new File(newName.asString()))) return fHandler.stackReceiver(argCount); throw fHandler.primitiveFailed(); }
/** * primClose: anID "Primitive call to close the receiver. 2/12/96 sw" <primitive: 151> ^ self * primitiveFailed! */ Object fileClose(int argCount) { if (argCount != 1) throw fHandler.primitiveFailed(); RandomAccessFile file = lookupFile(); try { file.close(); // Pharo seems to return self, so let's do the same return fHandler.stackReceiver(1); } catch (IOException e) { e.printStackTrace(); } throw fHandler.primitiveFailed(); }
/** * primSetPosition: id to: aNumber "Set the receiver's file position to be a Number. 2/12/96 sw" * <primitive: 155> ^ self primitiveFailed! */ Object fileSetPosition(int argCount) { if (argCount != 2) throw fHandler.primitiveFailed(); RandomAccessFile file = lookupFile(1); int pos = fHandler.stackPos32BitValue(0); try { file.seek(pos); return fHandler.stackReceiver(argCount); } catch (IOException e) { e.printStackTrace(); } throw fHandler.primitiveFailed(); }