Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Задание 2: Многопоточность




Разработать приложение согласно варианту задания.

Варианты заданий:

5. Необходимо разработать приложение для удаления файлов из нескольких каталогов одновременно. Процесс удаления реализовать в отдельных потоках.

Код программы: package лаба2з2;

import java.io.IOException;

import java.nio.file.DirectoryStream;

import java.nio.file.FileVisitResult;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.nio.file.SimpleFileVisitor;

import java.nio.file.attribute.BasicFileAttributes;

import java.util.logging.Level;

import java.util.logging.Logger;

class FindJavaVisitor extends SimpleFileVisitor<Path>{

@Override

public FileVisitResult visitFile(Path file, BasicFileAttributes attr) throws IOException {

if(file.toString().endsWith("nullmydata.txt")){

try { Files.delete(file);

} catch (java.io.IOException e){

e.getMessage(); }

}

return FileVisitResult.CONTINUE; }}

class NewThread implements Runnable{

Thread t;

@SuppressWarnings("empty-statement")

NewThread() {

t=new Thread();

t.start(); }

@Override

public void run() {

try{ FindJavaVisitor findJavaVisitor = new FindJavaVisitor();

findJavaVisitor.visitFile(null, null);

Thread.sleep(10); }

catch(java.lang.InterruptedException e){

e.getMessage();

} catch (IOException ex) {

Logger.getLogger(NewThread.class.getName()).log(Level.SEVERE, null, ex); }

}}

public class NewJFrame extends javax.swing.JFrame {

public NewJFrame() {

initComponents(); }

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jButton1.setText("Удалить Файл");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt); } });

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(159, 159, 159)

.addComponent(jButton1)

.addContainerGap(136, Short.MAX_VALUE)));

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(100, 100, 100)

.addComponent(jButton1)

.addContainerGap(177, Short.MAX_VALUE)));

pack();

}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

new NewThread();

java.nio.file.Path startdir= java.nio.file.Paths.get("C:\\");

try {

java.nio.file.Files.walkFileTree(startdir, new FindJavaVisitor());

Thread.sleep(10);

} catch (IOException ex) {

Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);

} catch (InterruptedException ex) {

Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); }

} /**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break; } }

} catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} //</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

new NewJFrame().setVisible(true); }

}); }

private javax.swing.JButton jButton1; }

До:

После:

Вывод: Изучил потоки ввода-вывода и работу с файлами в языке Java. Научился создавать приложения с графическим интерфейсом пользователя для работы с файлами, используя диалоги выбора файлов. Научился создавать многопоточные приложения.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных