Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Атрибуты файлов в Java / 12 сообщений из 12, страница 1 из 1
03.01.2017, 15:29
    #39379185
hoz
hoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
Пришлось научиться считывать и изменять некоторые атрибуты файлов. Вот начав рыскать по этой теме, наткнулся на различные варианты.
Можно, конечно, создавать сам атрибут, а потом считывать его типа так:
Код: java
1.
2.
3.
        BasicFileAttributes basicFileAttributes;
        basicFileAttributes = Files.readAttributes(path, BasicFileAttributes.class);
        BasicFileAttributeView attrView = Files.getFileAttributeView(path, BasicFileAttributeView.class);


Но, я наткнулся на совет, что можно работать с атрибутами посредством интерфейса FileStore. Это имеешь резон?
Спрашиваю потому, что написав небольшой код, видел странный возврат на выходе:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
package ListOfAttributeType;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileAttributeView;
import java.nio.file.attribute.FileStoreAttributeView;

public class FileStoreInstance {

    public static void InitializeeFS() {
        Path path = Paths.get("c:\\Users\\hoz\\Documents\\test.txt");
        try {
            FileStore store = Files.getFileStore(path);
            System.out.println("store.name() = " + store.name());
            System.out.println("store.name() = " + store.supportsFileAttributeView("size"));
        } catch (IOException e) {
            e.printStackTrace();
        }

        FileStore fileStore = new FileStore() {
            @Override
            public String name() {
                return null;
            }

            @Override
            public String type() {
                return null;
            }

            @Override
            public boolean isReadOnly() {
                return false;
            }

            @Override
            public long getTotalSpace() throws IOException {
                return 0;
            }

            @Override
            public long getUsableSpace() throws IOException {
                return 0;
            }

            @Override
            public long getUnallocatedSpace() throws IOException {
                return 0;
            }

            @Override
            public boolean supportsFileAttributeView(Class<? extends FileAttributeView> type) {
                return false;
            }

            @Override
            public boolean supportsFileAttributeView(String name) {
                return false;
            }

            @Override
            public <V extends FileStoreAttributeView> V getFileStoreAttributeView(Class<V> type) {
                return null;
            }

            @Override
            public Object getAttribute(String attribute) throws IOException {
                return null;
            }
        };
        try {
            System.out.println("fileStore.getTotalSpace() = " + fileStore.getTotalSpace());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


Из реализованного интерфейса FileStore возвращается такое же значение, например, getTotalSpace() как и из геттера из экземпляра getTotalSpace(). Тогда какой смысл реализовывать интрфейс FileStore, если и так все атрибуты можно получить?
...
Рейтинг: 0 / 0
03.01.2017, 15:35
    #39379188
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
hozНо, я наткнулся на совет, что можно работать с атрибутами посредством интерфейса FileStore. Это имеешь резон?

Возможно вы его не правильно интерпретировали. FileStore это обстрактный класс, а не интерфейс. Возможно имелся ввиду API?

hozСпрашиваю потому, что написав небольшой код, видел странный возврат на выходе:

Странный возврат на выходе? Анонимный класс тут нафига вообще?

hozИз реализованного интерфейса FileStore возвращается такое же значение, например, getTotalSpace() как и из геттера из экземпляра getTotalSpace(). Тогда какой смысл реализовывать интрфейс FileStore, если и так все атрибуты можно получить?
Вы что-то где-то нашли. Недопоняли. Как-то странно интерпретировали. И теперь хотите объяснения для вашей интрпретации? Не нужен этот анонимный класс.
https://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html
...
Рейтинг: 0 / 0
03.01.2017, 16:03
    #39379192
hoz
hoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
BlazkowiczВозможно вы его не правильно интерпретировали. FileStore это обстрактный класс, а не интерфейс. Возможно имелся ввиду API?

Как по мне, абстрактный класс, это и есть интерфейс, грубо говоря. Всё-равно, его нужно реализовывать. Да и профессионалы многие так считают. Но суть не в том. А причём тут API ?

BlazkowiczСтранный возврат на выходе? Анонимный класс тут нафига вообще?

Когда создаёшь экземпляр FileStore... как-то так набираешь в IDE:
Код: java
1.
FileStore d = new FileStore()


На выходе сразу же вижу анонимный класс образовавшийся:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
        FileStore fileStore = new FileStore() {
            @Override
            public String name() {
                return null;
            }

            @Override
            public String type() {
                return null;
            }

            @Override
            public boolean isReadOnly() {
                return false;
            }

            @Override
            public long getTotalSpace() throws IOException {
                return 0;
            }

            @Override
            public long getUsableSpace() throws IOException {
                return 0;
            }

            @Override
            public long getUnallocatedSpace() throws IOException {
                return 0;
            }

            @Override
            public boolean supportsFileAttributeView(Class<? extends FileAttributeView> type) {
                return false;
            }

            @Override
            public boolean supportsFileAttributeView(String name) {
                return false;
            }

            @Override
            public <V extends FileStoreAttributeView> V getFileStoreAttributeView(Class<V> type) {
                return null;
            }

            @Override
            public Object getAttribute(String attribute) throws IOException {
                return null;
            }
        };
        try {
            System.out.println("fileStore.getTotalSpace() = " + fileStore.getTotalSpace());
        } catch (IOException e) {
            e.printStackTrace();
        }


Т.е. я спецом его не писал. Он сам создался.

BlazkowiczВы что-то где-то нашли. Недопоняли. Как-то странно интерпретировали. И теперь хотите объяснения для вашей интрпретации? Не нужен этот анонимный класс.
https://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html
А FileStore нужен тогда для чего?
...
Рейтинг: 0 / 0
03.01.2017, 16:05
    #39379193
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
hoz,

А зачем делать new FileStore()???
...
Рейтинг: 0 / 0
03.01.2017, 16:16
    #39379199
hoz
hoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
BlazkowiczА зачем делать new FileStore()???
Blazkowicz, а как же мне тогда конструктор реализовать то?
...
Рейтинг: 0 / 0
03.01.2017, 16:41
    #39379206
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
hozBlazkowicz, а как же мне тогда конструктор реализовать то?
Это не ответ на вопрос.
FileStore store = Files.getFileStore(path); - вы уже получили store для вашего файла. Зачем вам "конструктор реализовать"?
...
Рейтинг: 0 / 0
03.01.2017, 19:38
    #39379271
hoz
hoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
Blazkowicz,
хочу понять для чего тогда имеешь у FileStore конструктор в jdk. Ведь если нужно получать его только так:
Код: java
1.
FileStore store = Files.getFileStore(path);


Какой тогда смысл в вызове конструктора https://docs.oracle.com/javase/8/docs/api/java/nio/file/FileStore.html#FileStore-- ?
Его можно было вообще не упоминать, а лишь пользоваться методом из Files https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#getFileStore(java.nio.file.Path)
Надеюсь мой вопрос понятен...
...
Рейтинг: 0 / 0
03.01.2017, 20:59
    #39379293
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
hozКакой тогда смысл в вызове конструктора?

И правда. Если какая-то фигня где-то задокументирована, то её обязательно нужно вызывать. Так ведь?

hozЕго можно было вообще не упоминать, а лишь пользоваться методом из Files
А ещё у него уровень доступа protected, что говорит нам о том что конструировать этот класс могут только наследники. С другой стороны нафига это абстрактному классу, сказать трудно. Разница с конструктором по-умолчанию только в этом модификаторе.

hozНадеюсь мой вопрос понятен...
Нет не понятен. Если вас интересуют такие дебри, то стоит читать код, а не JavaDoc.
...
Рейтинг: 0 / 0
07.01.2017, 03:24
    #39380234
hoz
hoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
На самом деле, меня не то, что бы дебри интересовали. А интересует меня как изменить атрибут "Автор" ?



Java, надеюсь это позволяет реализовать вообще?
...
Рейтинг: 0 / 0
07.01.2017, 05:36
    #39380239
dimonz80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
hozНа самом деле, меня не то, что бы дебри интересовали. А интересует меня как изменить атрибут "Автор" ?



Java, надеюсь это позволяет реализовать вообще?

ИМХО, ТС путает теплое с мягким.
На скриншоте параметры берутся не из ФС, а из содержимого файла Excel.

Если нужен "автор" как атрибут ФС, то вот:
автор файла скачать безплатно без СМС и регистрации

Если атрибуты конкретно из Excel/Word, то apache poi должен помочь
...
Рейтинг: 0 / 0
07.01.2017, 10:54
    #39380256
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
hoz,

Жесть какая. Даже не пробовали у гугла спросить комбинацию слов Java Excel author?
А пробовали смотреть свойства других файлов? Не документов офиса? Там тоже автор есть?
...
Рейтинг: 0 / 0
07.01.2017, 14:10
    #39380304
hoz
hoz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Атрибуты файлов в Java
Blazkowiczhoz,
Жесть какая. Даже не пробовали у гугла спросить комбинацию слов Java Excel author?
А пробовали смотреть свойства других файлов? Не документов офиса? Там тоже автор есть?
Действительно, я сморозил. Я так понимаю, это мне и было нужно.
Но как вообще с ним работать? Как конструктор создать? Я нашёл как применять, вроде бы тут , но так не выходит.
Написал так:
Код: java
1.
2.
3.
    public static void setCreator(File file) throws IOException, InvalidFormatException {
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        SummaryInformation summaryInfo = workbook.getSu;


Идея не выдаётся в интеллесенсе метод getSummaryInformation. Как будто его вообще нет в api excell POI.
Я проверил. Если вызвать метод getSummaryInformation()
Код: java
1.
2.
        HSSFWorkbook workbookh = new HSSFWorkbook(file);
        SummaryInformation summaryInfo = workbookh.getSummaryInformation();


Получается этот метод подходит лишь для файлов типа HSSF. А если у меня файлы типа XSSF как быть?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Атрибуты файлов в Java / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]