Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Вот пакетный файл общего назначения для печати вершины n
строки из файла как утилита GNU head
вместо просто одной строки.
@echo off
if [%1] == [] goto usage
if [%2] == [] goto usage
call :print_head %1 %2
goto :eof
REM
REM print_head
REM Prints the first non-blank %1 lines in the file %2.
REM
:print_head
setlocal EnableDelayedExpansion
set /a counter=0
for /f ^"usebackq^ eol^=^
^ delims^=^" %%a in (%2) do (
if "!counter!"=="%1" goto :eof
echo %%a
set /a counter+=1
)
goto :eof
:usage
echo Usage: head.bat COUNT FILENAME
, Например:
Z:\>head 1 "test file.c"
; this is line 1
Z:\>head 3 "test file.c"
; this is line 1
this is line 2
line 3 right here
Это в настоящее время не считает пустые строки. Это также подвергается ограничению длины строки пакетного файла 8 КБ.
Вы могли бы дать этому попытку:
@echo off
for /f %%a in (sample.txt) do (
echo %%a
exit /b
)
редактирование Или, скажите, что Вы имеете четыре столбца данных и хотите от 5-й строки вниз к нижней части, пробуете это:
@echo off
for /f "skip=4 tokens=1-4" %%a in (junkl.txt) do (
echo %%a %%b %%c %%d
)
Благодаря thetalkingwalnut с ответом пакетная команда (команды) Windows для чтения первой строки из текстового файла я предложил следующее решение:
@echo off
for /f "delims=" %%a in ('type sample.txt') do (
echo %%a
exit /b
)
Немного полагаясь на ответы других людей. Теперь позволяя Вам определить файл Вы хотите читать из и переменная, в которую Вы хотите результат, помещенный:
@echo off
for /f "delims=" %%x in (%2) do (
set %1=%%x
exit /b
)
Это означает, что можно использовать вышеупомянутое как это (предположение, что Вы назвали его getline.bat)
c:\> dir > test-file
c:\> getline variable test-file
c:\> set variable
variable= Volume in drive C has no label.
Один лайнер, полезный для stdout, перенаправляют с">":
@for /f %%i in ('type yourfile.txt') do @echo %%i & exit
for /f "delims=" %a in (downing.txt) do echo %a & pause>nul
Печать 1-я строка, затем ожидает пользователя для нажатия клавиши для печати следующей строки. После печати необходимых строк нажмите Ctrl+C для остановки.
@Ross Presser: Этот метод печатает строки только, не предварительно ожидают номера строки.
Обратите внимание, подходы к пакетному файлу будут ограничены лимитом строк для командного процессора DOS - см. Каков предел длины командной строки? .
Таким образом, при попытке обработать файл, в котором количество строк превышает 8192 символов, сценарий просто пропустит их, поскольку значение не может быть сохранено.