import java.util.*; import java.io.*; import static java.lang.System.*; public class TextFile { private File srcFile; // mantiene la localizzazione del file private Scanner fileScan; // lo Scanner che interpreta il contenuto del file public TextFile(String pathname) throws FileNotFoundException { srcFile = new File(pathname); fileScan = new Scanner(srcFile); } public String nextWord() { // imposta il delimitatore di tokens come una sequenza massimale di caratteri fileScan.useDelimiter("[^\\p{Alpha}]+"); // che non contiene caratteri alfabetici String word = null; if (fileScan.hasNext()) word = fileScan.next(); fileScan.reset(); // reimposta il delimitatore di default (whitespaces) return word; } // salta le prossime skipL linee e poi stampa le successive nL linee e poi public int printNextLines(int skipL, int nL) { // ritorna il numero di linee while (skipL > 0 && fileScan.hasNextLine()) { // effettivamente stampate fileScan.nextLine(); skipL--; } int count = 0; while (count < nL && fileScan.hasNextLine()) { out.println(fileScan.nextLine()); count++; } return count; } // stampa le prossime nL linee di testo del file e ritorna il numero di linee public int printNextLines(int nL) { // effettivamente lette e stampate return printNextLines(0, nL); } // riporta la scansione all'inizio del file public void rewind() throws FileNotFoundException { fileScan.close(); fileScan = new Scanner(srcFile); } // stampa l'intero file (linea per linea) e ritorna il numero di linee public int printFile() throws FileNotFoundException { rewind(); int count = 0; while (fileScan.hasNextLine()) { out.println(fileScan.nextLine()); count++; } return count; } // cerca la parola word nella parte di file non ancora scandita e ritorna public long find(String word) { // il numero di occorrenze trovate long count = 0; while (fileScan.hasNext()) { String w = fileScan.next(); if (word.equals(w)) count++; } return count; } // ritorna il numero di linee del file public int countLines() throws FileNotFoundException { rewind(); int count = 0; while (fileScan.hasNextLine()) { fileScan.nextLine(); count++; } return count; } // stampa le ultime nL linee del file e ritorna il numero di linee effettivamente public int printLastLines(int nL) throws FileNotFoundException { // stampate int nLinee = countLines(); // numero totale linee del file rewind(); int skipL = (nLinee >= nL ? nLinee - nL : 0); // numero di linee da saltare while (skipL > 0) { // salta le prime linee fileScan.nextLine(); skipL--; } int count = 0; while (fileScan.hasNextLine()) { // stampa le ultime nL linee out.println(fileScan.nextLine()); count++; } return count; } // chiude la scansione. Dopo la chiusura l'unico metodo che può essere public void close() { // usato è rewind() fileScan.close(); fileScan = null; } }
import static java.lang.System.*; public class AlignTitle extends Title { public static final int LEFT = 0, CENTER = 1, RIGHT = 2; private int alignment; private int fieldSize; public AlignTitle(String t, int align, int field) { super(t); // invoca il costruttore della classe Title alignment = align; fieldSize = field; } public void setAlign(int align) { alignment = align; } public void setField(int size) { fieldSize = size; } public int printLength() { return fieldSize; } // ridefinisce il metodo di Title public void print() { // ridefinisce (override) il metodo della classe Title int dLen = super.printLength(); // invoca il metodo della classe Title int leftChars = 0, rightChars; switch (alignment) { case LEFT: leftChars = 0; break; case CENTER: leftChars = (fieldSize - dLen)/2; break; case RIGHT: leftChars = fieldSize - dLen; break; } rightChars = fieldSize - dLen - leftChars; for (int i = 0 ; i < leftChars ; i++) out.print(' '); super.print(); // invoca il metodo print() della classe Title for (int i = 0 ; i < rightChars ; i++) out.print(' '); } } /****************** In un file di nome: FrameTitle.java ***********************/ import static java.lang.System.*; public class FrameTitle extends AlignTitle { private char frameChar = '*'; public FrameTitle(String t, int align, int field) { super(t, align, field); } public void setFrameChar(char c) { frameChar = c; } @Override public void print() { int len = printLength(); for (int i = 0 ; i < len + 2 ; i++) out.print(frameChar); out.println(); out.print(frameChar); super.print(); out.print(frameChar); out.println(); for (int i = 0 ; i < len + 2 ; i++) out.print(frameChar); out.println(); } }
![]() |
![]() |
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica ![]() |
|
![]() |
![]() |