예제 #1
0
  /**
   * 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();
  }
예제 #2
0
  /**
   * 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();
  }
예제 #3
0
  /**
   * 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();
  }
예제 #4
0
  /**
   * 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();
  }
예제 #5
0
  /**
   * 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();
  }