任意の数の行を含むことができるファイルを読み込んでいます。
変数""として渡された最初の1000程度を保存するだけで済みますrecordsToParse
。
1000行の制限、または設定されている行数に達した場合は、トレーラー情報をファイルに保存して確認する必要がありtotal_records
ますtotal_amount
。
したがって、ファイル内のどこからでも「ポインタ」を最後の行に移動して、もう一度実行する方法が必要です。
file = File.open(file_name)
parsed_file_rows = Array.new
successful_records, failed_records = 0, 0
file_contract = file_contract['File_Contract']
output_file_name = file_name.gsub(/.TXT|.txt|.dat|.DAT/,'')
file.each do |line|
line.chomp!
line_contract = determine_row_type(file_contract, line)
if line_contract
parsed_row = parse_row_by_contract(line_contract, line)
parsed_file_rows << parsed_row
successful_records += 1
else
failed_records += 1
end
if (not recordsToParse.nil?)
if successful_records > recordsToParse
# move "pointer" to last line and go through loop once more
#break;
end
end
end
store_parsed_file('Parsed_File',"#{output_file_name}_parsed", parsed_file_rows)
[successful_records, failed_records]