2014-12-17 2 views
0

Я иду через API Java и интересно, вариант использование для создания FileDescriptor объекта с помощью конструктора класса, есть ли - другие слова:Есть ли прецедент для непосредственного создания экземпляра FileDescriptor?

FileDescriptor newFileDescriptor = new FileDescriptor(); 

В API определяет, что построенный объект является недействительным. Благодарю.

+0

, основанный на странице API, нет других конструкторов, поэтому я бы сказал, что нет. – chris

+0

FileDescriptor() Создает объект (недействительный) FileDescriptor. – paxmemento

+0

Это описание конструктора от Javadoc – paxmemento

ответ

0

Нет, у меня не было случая использования, когда это имеет смысл. не

FileDescriptor documentation довольно ясно, что в то время как вы можете построить FileDescriptor непосредственно, вы должны:

Экземпляры класса дескриптора файла служат непрозрачным ручкой для основной машины специфичной структура, представляющая открытый файл, открытый сокет или другой источник или приемник байтов. Основным практическим применением файлового дескриптора является создание FileInputStream или FileOutputStream, чтобы его содержать. Приложения не должны создавать свои собственные файловые дескрипторы .

Отметить последнее предложение: Приложения не должны создавать свои собственные файловые дескрипторы.

FileDescriptor() documentation объясняет дальше (как вы нашли):

конструирует (недопустимый) объект FileDescriptor.

Поэтому newFileDescriptor.valid() вернет false.

Сказав это, если вы непосредственно построить FileDescriptor, это, безусловно, является действительным Java объект в общем смысле. Например, следующий код ...

FileDescriptor newFileDescriptor = new FileDescriptor(); 
System.out.println(newFileDescriptor.getClass()); 

... выходы ...

класс java.io.FileDescriptor

... так же, как можно было бы ожидать; но это, конечно, не особенно полезно - для объекта, который можно было бы использовать в качестве файлового дескриптора.

Нижняя линия, отделяющая волосы в сторону, лучше следовать совету документации.

+1

Спасибо. Поэтому я предполагаю, что недействительный в случае дескриптора относится к функциональности. не существование? – paxmemento

+0

@ user3814660: Право, существующее, но недействительное по прямому назначению. – J0e3gan

2

The documentation говорит

Приложения не должны создавать свои собственные дескрипторы файлов.

Это кажется довольно четким.

документация Единственный конструкторском говорит

конструирует (недействительный) объекта FileDescriptor.

который также выглядит довольно понятным.

+0

Да, да. Благодарю. Просто хотел узнать, работал ли кто-нибудь с исключением из этого правила. – paxmemento

-1

, так что вы хотите получить доступ к некоторым файлам правильно? посмотрите: http://examples.javacodegeeks.com/core-java/io/filedescriptor/java-file-descriptor-example/ В принципе, класс Java FileDescriptor предоставляет дескриптор базовой структуры, специфичной для машины, представляющей открытый файл, открытый сокет или другой источник или приемник байтов.

Приложения не должны создавать объекты FileDescriptor, они в основном используются при создании объектов FileInputStream или FileOutputStream, чтобы их содержать.

Итак, всякий раз, когда мы создаем объект FileInputStream или FileOutputStream, мы получаем связанный с ним объект FileDescriptor, мы также можем использовать этот объект FileDescriptor для создания другого объекта FileInputStream или FileOutputStream.

Теперь рассмотрим пример FileInputStream с помощью FileDescriptor.

FileInputStream fileInputStream = new FileInputStream(new File(

       "/path/to/file.txt")); 

     FileDescriptor fd = fileInputStream.getFD(); 

     System.out.println(" File descriptor of the file/path/to/file.txt : " 
         + fd.hashCode()); 

     fileInputStream.close(); 

     FileOutputStream fileOutputStream = new FileOutputStream(new File(

       "/path/to/file.txt")); 

     FileDescriptor fd2 = fileOutputStream.getFD(); 



     fileOutputStream.close(); 

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