예제 #1
0
  /**
   * Array with
   *
   * <p><name> <creationTime> <modificationTime> <dirFlag> <fileSize>
   *
   * <p>See {@link #lookupEntryInIndex(int)}
   */
  private SqueakObject makeDirectoryEntryArray(File file) {
    // bah, Java doesn't provide the creation time.  If it is
    // really necessary, it may be possible to use java-posix or
    // jtux.
    String name = file.getName();
    long creationTime = file.lastModified();
    long modificationTime = file.lastModified();
    boolean dirFlag = file.isDirectory();
    long fileSize = file.length();

    try {
      Object[] array = {
        fHandler.makeStString(name),
        fHandler.squeakSeconds(creationTime),
        fHandler.squeakSeconds(modificationTime),
        fHandler.squeakBool(dirFlag),
        fHandler.pos32BitIntFor(fileSize)
      };

      return fHandler.squeakArray(array);
    } catch (ArrayIndexOutOfBoundsException e) {
      System.out.println(
          "Error in FileSystemPrimitives.makeDirectoryEntryArray: name = '" + name + "'");
      throw e;
    }
  }
예제 #2
0
  /**
   * primAtEnd: id "Answer whether the receiver is currently at its end. 2/12/96 sw"
   *
   * <p><primitive: 150> ^ self primitiveFailed!
   */
  Object fileAtEnd(int argCount) {
    if (argCount != 1) throw fHandler.primitiveFailed();

    RandomAccessFile file = lookupFile();
    try {
      return fHandler.squeakBool(file.getFilePointer() >= file.length());
    } catch (IOException e) {
      e.printStackTrace();
    }

    throw fHandler.primitiveFailed();
  }