42 1 470KB
4
Ministerul Educației al Republicii Moldova Universitatea Tehnică a Moldovei Facultatea Calculatoare, Informatică şi Microelectronică Departamentul Ingineria Software şi Automatică
Raport Lucrarea de laborator nr.5 Disciplina: Tehnici avansate de programare
A efectuat:
st. gr. CR-181 Patras Cristi
A verificat
Petic Mircea
Chișinău - 2020
1. Tema lucrării: Tratarea excepţiilor 2. Scopul lucrării: Însuşirea modalităţilor de creare şi realizarea exceptiilor in Java Sarcina: 1.Sa se citeasca cite un rind dintr-un fişier şi să se înscrie in stivă. Apoi rîndurile din stivă de înscris în fişier în ordine inversă. CODUL: Clasa Lab5.java: public class Lab5 { public static void main(String[] args) { Window w = new Window(); } }
Clasa Window: import import import import import import
java.awt.BorderLayout; java.awt.event.ActionEvent; java.awt.event.ActionListener; java.io.File; java.io.FileNotFoundException; java.io.IOException;
import import import import import
javax.swing.JButton; javax.swing.JFileChooser; javax.swing.JFrame; javax.swing.JTextArea; javax.swing.filechooser.FileSystemView;
public class Window { FileHandler fileHandler = new FileHandler();
Window() { createWindow(); fileHandler.selectFile(); } private void createWindow() { JFrame f = new JFrame("Lab 5"); f.setSize(350, 250); f.setLocation(300,200); final JTextArea textArea = new JTextArea(10, 40); f.getContentPane().add(BorderLayout.CENTER, textArea); final JButton button = new JButton("Convert"); f.getContentPane().add(BorderLayout.SOUTH, button); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textArea.append(revertLinesActionHandler() + "\n"); } }); f.setVisible(true); } public String revertLinesActionHandler() { try { fileHandler.revertLines(); } catch (FileNotFoundException e) { return "File-ul nu a fost gasit!"; } catch (IOException e) { return "Imposibil ce citit file-ul"; } catch (IllegalStateException e) { return "File-ul este pustiu!"; } return "Randurile au fost inversate!"; } }
Clasa FileHandler: import import import import import import import import import
java.io.BufferedReader; java.io.File; java.io.FileInputStream; java.io.FileOutputStream; java.io.IOException; java.io.InputStreamReader; java.io.PrintStream; java.io.PrintWriter; java.util.Stack;
import javax.swing.JFileChooser; import javax.swing.filechooser.FileSystemView; public class FileHandler { String path = ""; void selectFile() { JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory()); int returnValue = jfc.showOpenDialog(null); if (returnValue == JFileChooser.APPROVE_OPTION) { File selectedFile = jfc.getSelectedFile(); path = selectedFile.getAbsolutePath(); } } void revertLines() throws IOException { FileInputStream fstream = new FileInputStream(path); BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); Stack lines = new Stack(); String strLine; int count = 0; while ((strLine = br.readLine()) != null) lines.add(strLine); count += 1; } fstream.close();
{
if (lines.isEmpty()) { throw new IllegalStateException(); } PrintStream out = new PrintStream(new FileOutputStream(path)); for (int i = 0; i < count; i++) { out.print(lines.pop() + "\n"); } out.close(); } }
Rezultatele obtinute: Odata cu pornirea programului se porneste si un file selector. Alegem file-ul de tip .txt si apasam “Convert”.
In cazul in care nu a fost nicio exceptie, va aparea mesajul respective
In caz ca file-ul nu poate fi citit, este de tip ‘readonly’ sau nu exista, aceasta exceptie va fi prelucrata si va aparea mesaj.
Concluzie
In aceasta lucrare de laborator am studiat insuşirea modalităţilor de creare şi realizare a exceptiilor in Java. Am prelucrat cateva erori standarte, care ar putea aparea la citirea unui file, dar am si creat una proprie. Deasemenea am creat un User Interface pentru a selecta file-uri si a afisa resultatul rularii programului. Pentru aceasta am folosit bibliotecile standate din Java (Swing). Am folosit diverse biblioteci pentru a descrie mai concis exceptiile in java de exemplu import java.awt.BorderLayout; import import import import import
java.awt.event.ActionEvent; java.awt.event.ActionListener; java.io.File; java.io.FileNotFoundException; java.io.IOException;
import javax.swing.JButton; import javax.swing.JFileChooser;
. Am importat diverse elemente din JFX pentru tratarea exceptiilor. Am folosit constructori ca de exemplu { JFrame f = new JFrame("Lab 5"); f.setSize(350, 250); f.setLocation(300,200); final JTextArea textArea = new JTextArea(10, 40); f.getContentPane().add(BorderLayout.CENTER, textArea); final JButton button = new JButton("Convert"); f.getContentPane().add(BorderLayout.SOUTH, button); button.addActionListener(new ActionListener() {
.