30 lines
		
	
	
		
			632 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			632 B
		
	
	
	
		
			V
		
	
	
import os
 | 
						|
import io
 | 
						|
 | 
						|
fn read_file(file string, cap int) []string {
 | 
						|
	mut lines := []string{}
 | 
						|
	mut f := os.open(file) or { panic(err) }
 | 
						|
	defer {
 | 
						|
		f.close()
 | 
						|
	}
 | 
						|
	mut r := io.new_buffered_reader(reader: f, cap: cap)
 | 
						|
	for {
 | 
						|
		l := r.read_line() or { break }
 | 
						|
		lines << l
 | 
						|
		// println('Line: $l')
 | 
						|
	}
 | 
						|
	assert lines.len > 0
 | 
						|
	assert r.end_of_stream == true
 | 
						|
	println('------------------------------------------------ cap: ${cap:6}; read: ${lines.len:3} lines')
 | 
						|
	return lines
 | 
						|
}
 | 
						|
 | 
						|
fn test_file_reader() {
 | 
						|
	for cap := 1; cap <= 10000; cap += 256 {
 | 
						|
		lines := read_file(@FILE, cap)
 | 
						|
		assert lines.last() == '// my last line'
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// my last line
 |