2013-12-08 7 views
0

Я пишу класс компаратора, который сравнивает размер файла одного файла с другим файлом в том же каталоге. У меня возникли проблемы с поиском нужной документации, чтобы получить размер файла.Java - Получение размера объекта

Прямо сейчас я смотрю на документацию здесь GetObjectSize:

http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html#getObjectSize(java.lang.Object)

Вот мой код, однако он, кажется, не работает.

public class FileComparator implements Comparator { 

    private static Instrumentation instrumentation; 

    @Override 
    public int compare(Object o1, Object o2) { 

     throw new UnsupportedOperationException("Not supported yet."); 

    } 

    static long getObjectSize(Object objectToSize) { 

     return instrumentation.getObjectSize(objectToSize); 

    } 

} 

public class Comparison { 

    public static void main(String[] args) { 

     File file = new File("src/Dummy1.pdf"); 

     System.out.println(FileComparator.getObjectSize(file)); 

    } 

} 

Я получаю исключение NullPointerException.

+3

When вы получаете исключение NullPointerException, читаете трассировку стека. Он скажет вам, что такое null, и на какой строке произошла ошибка. (Это касается многих, если не всех исключений во время выполнения). Я думаю, что ваша конкретная проблема заключается в том, что 'instrumentation' не был инициализирован. – keyser

+0

http://www.javamex.com/tutorials/memory/instrumentation.shtml –

+0

Кроме того, этот метод не имеет значения для размера файла. – SLaks

ответ

2

Вам необходимо использовать file.length().

То, что вы в настоящее время пытаетесь получить, это то, сколько места занимает file. Объект принимает в ОЗУ не что вы хотите.

1

Я думаю, что вы должны инициализировать instrumentation, чтобы избавиться от NullPointerException

Попробуйте это:

public int compare(Object o1, Object o2) { 
    instrumentation = o2; 
    throw new UnsupportedOperationException("Not supported yet."); 

} 

Также используйте file.length() как вы хотите знать, пространство, в котором ваш объект файл занимает

Смежные вопросы