/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javaapplication5; import java.io.*; /** * @author Daxo */ public class KopiujDane { public void copy(File source, File output, int linesToCopy) throws IOException { validateLineNumber(source, linesToCopy); validateFile(source); if (!output.exists()) { System.out.println("Plik nie istnieje. Tworzę nowy."); output.createNewFile(); } //Try with resources - używając tego nie trzeba zadeklarowanych streamów zamykać czyli omijamy 'finaly' try(BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(source))); FileOutputStream out = new FileOutputStream(output)) { for(int i = 0; i < linesToCopy; i++) { out.write((in.readLine() + "\n").getBytes()); } } } private void validateFile(final File source) { if(!source.exists()) { throw new IllegalArgumentException("Plik " + source.getAbsolutePath() + " nie istnieje."); } } private void validateLineNumber(final File source, final int linesToCopy) throws IOException { if(linesToCopy > countLinesNumber(source)) { throw new IllegalArgumentException("Liczba linii do skopiowania jest większa niż " + "rzeczywista liczba linii w pliku"); } } private int countLinesNumber(File file) throws IOException { int lines = 0; try(BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) { while (reader.readLine() != null) { lines++; } } return lines; } }