Я запускаю Windows, и я пытаюсь обратиться к каталогу. Моя функция начинается как это:
File file = new File("C:\\somedir\\report");
if (!file.exists()) {
file.mkdirs();
}
doStuffWith(file);
Я получил NullPointerException в doStuffWith
функция, когда я пытался звонить listFiles
. Хорошо я смотрел в C:\somedir и что сделало я нахожу - существует файл, названный "отчетом" без расширения и также каталогом, названным "отчетом"! То, что, казалось, произошло, было то, что file
объект относился к файлу отчета, а не каталогу. Как я удостоверяюсь, что обращаюсь к каталогу а не файлу?
a = = b
является тестом , если a и b равны.
a = b
называется присвоением , что означает, что переменная a имеет то же значение, что и b .
(В раскладке клавиатуры США введите |
с помощью клавиши Shift- \
.)
Просто используйте буквенную последовательность, и вы должны быть хорошо идти...
label1.Text = @"Test for Tab";
Где это большое пространство, где я на самом деле три раза попал на вкладку... надеюсь, это поможет
-121--2948970-Один из способов перехода состоит в том, чтобы передать файловый объект, соответствующий «C :\somedir», методу и внутри метода, сделать listFiles () и пройти через содержимое, каждый раз проверяя имя файла и если это «отчет», сделать isDirectory (). продолжить фактическую обработку, когда возвращается значение true.
Я не понимаю проблему это работает нормально для меня:
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 );
}
}
Я думаю, что есть метод ISDirectory (), который скажет вам, если это является каталогом
- редактировать
, вот что я получаю за то, что вы наступите в начале. Я провел свой код локально, и он отлично работает для меня. Смог создать новые файлы, читать содержимое каталогов и т. Д. Что еще вы пытаетесь сделать?
Убедитесь, что в вашей файловой системе включена чувствительность к регистру ( 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"
.