Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Используйте for
, что-то вроде:
set content=
for /f "delims=" %%i in ('filename') do set content=%content% %%i
, Возможно, you’ll должны сделать setlocal enabledelayedexpansion
и/или использование !content!
, а не %content%
. Я тест can’t, как я, don’t имеют любой MS Windows поблизости (и я желаю Вам того же:-).
лучший batch-file-black-magic-reference, о котором я знаю, - в http://www.rsdn.ru/article/winshell/batanyca.xml . Если Вы, don’t знают русский язык, Вы все еще, могли бы некоторые использовать обеспеченные фрагменты кода.
Можно использовать:
set content=
for /f "delims=" %%i in ('type text.txt') do set content=!content! %%i
Можно ли определить последующую обработку?
можно использовать, чтобы цикл почти сделал это, но нет никакого простого способа вставить CR/LF в переменную среды, таким образом, у Вас будет все в одной строке. (можно быть в состоянии работать вокруг этого в зависимости от того, что необходимо сделать.)
Вы также ограничены меньше, чем о 8k текстовых файлах этот путь. (Вы не можете создать единственный огибающий var, больше, чем вокруг 8k.)
предложение счета для цикла, вероятно, в чем Вы нуждаетесь. Вы обрабатываете файл одна строка за один раз:
(использование %i
в командной строке %%i
в пакетном файле)
for /f "tokens=1 delims=" %%i in (file.txt) do echo %%i
более усовершенствованный:
for /f "tokens=1 delims=" %%i in (file.txt) do call :part2 %%i
goto :fin
:part2
echo %1
::do further processing here
goto :eof
:fin
Создайте файл под названием "SetFile.bat", который содержит следующую строку с никакой возврат каретки в конце его...
set FileContents=
Тогда в Вашем пакетном файле делают что-то вроде этого...
@echo off
copy SetFile.bat + %1 $tmp$.bat > nul
call $tmp$.bat
del $tmp$.bat
%1 название Вашего входного файла, и %FileContents % будет содержать содержание входного файла после вызова. Это будет только работать над одним файлом строки хотя (т.е. файлом, содержащим возвраты каретки). Вы могли разделить/заменять возвраты каретки из файла прежде, чем назвать %tmp%.bat в случае необходимости.