2013-05-01 5 views
0

Я написал небольшую программу, которая найдет файл, который я сделал, и распечатаю некоторые его детали. Он выполняет все правильно, но не может определить размер файла, или если он скрыт или нет. НАПРИМЕР.Код не может найти мой файл

file path: C:\temp\filetext.txt last modified: 0 file size: 0 Is file hidden?false 

файл существует в папке временных на C. Я не совсем уверен, что проблема

public void Q1() 
{ 
    String fileName = "filetext.txt"; 
    getFileDetails(fileName); 
} 

public void getFileDetails(String fileName) 
{ 
    String dirName = "C:/temp/"; 
    File productsFile = new File(dirName + fileName); 
    long size = productsFile.length(); 
    System.out.println("file path: " + productsFile.getAbsolutePath() + " last modified: " + productsFile.lastModified() + " file size: " + productsFile.length() + " Is file hidden?" + productsFile.isHidden()); 
} 
+0

путь к файлу: C: \ temp \ filetext.txt Последнее изменение: 0 Размер файла: 0 Является ли файл скрытым? False – Liam

+0

Говорят, что «Файл» не скрыт и имеет размер '0'. Вы говорите, что файл ** скрыт и содержит что-то? –

+0

Я просто запустил его на своей машине, и все прошло отлично. Он распечатывал то, что вы видели, когда файл не существует. Попробуйте добавить if (! ProductsFile.exists()) System.out.println («Этот файл не существует»); в getFileDetails, чтобы убедиться, что ваш файл может быть найден. –

ответ

2

файл не нужен физический файл для работы. Поэтому ваш объект File может существовать, даже если физический файл, который он должен представлять, не существует/не может быть найден. Проверьте JavaDoc на length() и lastModified(), оба они возвращают 0L в случае, например, файл не существует. Поэтому убедитесь, что ваши объекты File связаны с существующим файлом в вашей файловой системе, вызывая file.exists() перед вызовом других методов.

+0

Вы правы в файле file.exist, он, похоже, не может найти файл. Но я создал файл с именем filetest.txt в папке temp. Я не совсем уверен, почему он не подбирает его. C: \ temp – Liam

+2

Ну, если вы создали файл с именем filetest.txt вместо filetext.txt, как в вашем коде, проблема очевидна :-) – Marco

+0

Покажите нам результат из вашей программы. Я отмечаю, что вы использовали косые черты в своем имени пути; Я не знаю, что происходит в окне Windows, когда вы делаете это в java. Но да, вы должны обязательно проверить productsFile.exists(), прежде чем беспокоиться о любом из других свойств. –

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