Как я обращаюсь к каталогу в Java?

Я запускаю Windows, и я пытаюсь обратиться к каталогу. Моя функция начинается как это:

File file = new File("C:\\somedir\\report");
if (!file.exists()) {
  file.mkdirs();
}
doStuffWith(file);

Я получил NullPointerException в doStuffWith функция, когда я пытался звонить listFiles. Хорошо я смотрел в C:\somedir и что сделало я нахожу - существует файл, названный "отчетом" без расширения и также каталогом, названным "отчетом"! То, что, казалось, произошло, было то, что file объект относился к файлу отчета, а не каталогу. Как я удостоверяюсь, что обращаюсь к каталогу а не файлу?

5
задан Kidburla 28 January 2010 в 12:50
поделиться

4 ответа

a = = b является тестом , если a и b равны.

a = b называется присвоением , что означает, что переменная a имеет то же значение, что и b .

(В раскладке клавиатуры США введите | с помощью клавиши Shift- \.)

-121--4088918-

Просто используйте буквенную последовательность, и вы должны быть хорошо идти...

label1.Text = @"Test for            Tab";

Где это большое пространство, где я на самом деле три раза попал на вкладку... надеюсь, это поможет

-121--2948970-

Один из способов перехода состоит в том, чтобы передать файловый объект, соответствующий «C :\somedir», методу и внутри метода, сделать listFiles () и пройти через содержимое, каждый раз проверяя имя файла и если это «отчет», сделать isDirectory (). продолжить фактическую обработку, когда возвращается значение true.

3
ответ дан 14 December 2019 в 08:50
поделиться
-

Я не понимаю проблему это работает нормально для меня:

public class MkDir {
    static void doStuff(File dir) {
        if ( dir.isDirectory() ) {
            File[] listFiles = dir.listFiles();
            for ( File f : listFiles ) {
                System.out.println( f.getName() );
            }
        }
    }

    public static void main(String[] args) {
        File file = new File( "C:\\dev\\rep2\\rep" );
        if ( !file.exists() ) {
            file.mkdirs();
        }
        doStuff( file );
    }
}
1
ответ дан 14 December 2019 в 08:50
поделиться

Я думаю, что есть метод ISDirectory (), который скажет вам, если это является каталогом

- редактировать

, вот что я получаю за то, что вы наступите в начале. Я провел свой код локально, и он отлично работает для меня. Смог создать новые файлы, читать содержимое каталогов и т. Д. Что еще вы пытаетесь сделать?

3
ответ дан 14 December 2019 в 08:50
поделиться

Убедитесь, что в вашей файловой системе включена чувствительность к регистру ( HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ kernel \ dword: ObCaseInsensitive в реестре.)

Если да, возможно, у вас есть Вас укусила проблема, связанная с делом. Один из способов проверки:

String someName = "./nameNotUsedYet";
boolean first = new File(someName).mkdirs();
boolean second = new File(someName.toUpperCase()).mkdirs();
System.out.println("first = " + first + ", second = " + second);

Если оба вызова mkdirs () завершились успешно, вы знаете, что у вас есть осложнение, связанное с конкретным случаем. Если это так, убедитесь, что вы правильно поняли футляр для "C: \ somedir \ report" .

0
ответ дан 14 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: