实验五输入输出多线程网络_第1页
实验五输入输出多线程网络_第2页
实验五输入输出多线程网络_第3页
实验五输入输出多线程网络_第4页
实验五输入输出多线程网络_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 湖北工业大学工程技术学院实验报告课程名称: java 实验内容: 实验五 输入输出多线程网络 学院: 工 程 技 术 学 院 专业班级: 11gb软件2班 教师: 程学先 成绩: 一、实验目的:1、了解对文件、文件夹属性的读、写方法。2、掌握字节流与字符流的概念及读、写方法。3、掌握文件读写(顺序与随机)、复制、压缩的程序设计方法。4、了解图片导入的方法。5、掌握线程的概念,了解多线程的程序用途与程序设计方法。6、掌握applet小程序设计方法。7、了解图形设计程序设计方法。二、执行下述程序,说明各程序功能。如果题后有问题,按问题进行设计并总结。将每题运行结果复制粘贴到一个word文件中。每

2、题注意写明题号(从1到3)。1、获取某文件夹下某文件的文件名称、父路径、长度、最后修改时间、是否可读、是否可写等信息。该文件可在自己的机器上任意一个文件夹中任意选一个。import java.io.file;public class filedemo public static void main(string args) file file = new file(d:/h1/echo.txt);/根据文件全名创建文件对象,文件名称请自己选定后修改,不修改者或不存在着无分 if (file.exists() / 判断该文件是否存在 string name = file.getname(); /

3、 获取文件名称 string parent = file.getparent(); / 获取文件父路径 long leng = file.length(); / 获取文件长度 boolean bool = file.canwrite(); / 判断该文件是否可改写 system.out.println(文件名称为: + name); / 输出信息 system.out.println(文件目录为: + parent); system.out.println(文件大小为: + leng + bytes); system.out.println(最后修改时间 +file.lastmodified(

4、); system.out.println(是否可读+file.canread(); system.out.println(是否为可改写文件: + bool); 2、获取某盘、某文件夹下全部文件名称。该文件夹可在自己的机器上任意一个盘中选一个。对文件目录运行前与运行后抓屏并将抓屏图像贴到word文件中。import java.io.file;public class filedemo2 public static void main(string args) file dir = new file(e:/text); /根据文件路径创建文件对象,,文件夹名称请自己选定后修改,不修改者或不存在着

5、无分 if (dir.isdirectory() / 如果该文件对象指定的是一个目录 file files = dir.listfiles(); / 获取该目录下的抽象路径名数组 for (int i = 0; i 0) f0.write(s); /如果不是空行则写 f.close( ); f0.close( ); catch (ioexception e) system.err.println(发生异常: + e); 8、复制文件夹,对文件目录运行前与运行后抓屏并将抓屏图像贴到word文件中。import java.io.file;import java.io.fileinputstream

6、;import java.io.fileoutputstream;import java.io.ioexception;public class directoryscopydemo public static void main(string args) throws ioexception int count = 0; /注意下面的文件夹名自拟 file sources = new file(d:/h1);/ 源文件夹 file targets = new file(d:/h2);/ 目标文件夹 if (!targets.exists() / 如果目标文件夹不存在 targets.mkdi

7、r();/ 创建文件夹 file source = sources.listfiles();/ 获得源文件夹中所有文件 fileinputstream fis = null; fileoutputstream fos = null; for (file file : source) fis = new fileinputstream(file);/ 创建输出流 file target = new file(targets.getabsolutepath() + file.separator + file.getname(); if (!target.exists() target.create

8、newfile();/ 创建新文件 fos = new fileoutputstream(target); byte bytes = new byte1024;/ 创建字节数组 int length; while (length = fis.read(bytes) != -1) fos.write(bytes, 0, length);/ 将源文件内容写入新文件 system.out.println(file.getname() + 复制完毕!); count+; system.out.println(一个复制了+count+个文件!); 9、压缩文件夹生成zip文件。对d盘目录运行前与运行后抓

9、屏并将抓屏图像贴到word文件中。import java.io.file;import java.io.fileinputstream;import java.io.fileoutputstream;import java.io.ioexception;import java.util.zip.zipentry;import java.util.zip.zipoutputstream;public class directoryzipdemo public static void main(string args) throws ioexception file sources = new f

10、ile(d:/a1); /注意文件夹名自拟 file target = new file(d:/a1.zip); file source = sources.listfiles(); fileinputstream fis = null; fileoutputstream fos = null; zipoutputstream zos = null; zipentry entry = null; byte buffer = new byte1024;/ 创建写入压缩文件的数组 fos = new fileoutputstream(target); zos = new zipoutputstre

11、am(fos); for (file file : source) entry = new zipentry(file.getname(); fis = new fileinputstream(file); zos.putnextentry(entry); int read = 0; while (read = fis.read(buffer) != -1) zos.write(buffer, 0, read);/ 将输入写入到压缩文件 zos.closeentry();/ 关闭zipentry fis.close();/ 释放资源 zos.close(); fos.close(); 10、将

12、a1中多个.txt文件合并写到一个文件中。在d盘建文件夹a1,在其中存放三个java文件,再运行本程序。对文件目录运行前与运行后抓屏并将抓屏图像贴到word文件中。import java.io.bufferedinputstream;import java.io.file;import java.io.filefilter;import java.io.fileinputstream;import java.io.filenotfoundexception;import java.io.fileoutputstream;import java.io.ioexception;public cla

13、ss fileconcatenation24 public static void main(string args) file rootfile = new file(d:/a1);/ 获得要合并java文件的文件夹 file files = rootfile.listfiles(new filefilter() / 获取文件夹中所有txt文件 override public boolean accept(file pathname) if (pathname.getname().endswith(.java) /要合并的文件的文件类型 return true; else return fa

14、lse; ); file concatedfile = new file(d:/a1/a11.txt);/ 声明合成后的文件 fileinputstream fis = null; fileoutputstream fos = null; bufferedinputstream bis = null; try fos = new fileoutputstream(concatedfile);/ 创建文件输出流对象 for (file file : files) / 遍历所有要合成的文件 fis = new fileinputstream(file);/ 创建文件输入流 bis = new bu

15、fferedinputstream(fis);/ 利用文件输入流创建缓冲输入流 int length = 0; while (length = bis.read() != -1) fos.write(length);/ 将输入流写入新文件 catch (filenotfoundexception e) e.printstacktrace(); catch (ioexception e) e.printstacktrace(); finally if (bis != null) try bis.close();/ 关闭缓冲输入流 catch (ioexception e) e.printstac

16、ktrace(); if (fis != null) try fis.close();/ 关闭文件输入流 catch (ioexception e) e.printstacktrace(); if (fos != null) try fos.close();/ 关闭文件输出流 catch (ioexception e) e.printstacktrace(); 11、木马、病毒等常常需要监视键盘操作,例如通过监听登录过程中的用户名与密码,记录下来,达到盗取账号的目的。本程序未实现监听,只是将用户登录时输入到文本框中的内容(包括用户名、密码、登录时间)记录到文件中。本程序采用了顺序存取文件与随机

17、文件二种保存方式,后者可以添加新内容到文件尾部,可以保存历史数据。前者只能保存最后一次登录的数据。请多次运行登录程序,之后,比较存放在d:a1中的aaa1和aaa2二个文本文件中的内容。学习与比较二种文件存取数据的特点与方法。package com.lw;import java.awt.*;import java.awt.event.*;import java.util.date;import java.io.*;import javax.swing.*;import javax.swing.border.*;public class keyboardlistener extends jfra

18、me private static final long serialversionuid = 7158985419563418289l; private jpanel contentpane; private jtextfield textfield; private jpasswordfield passwordfield; public static void main(string args) try uimanager.setlookandfeel(com.sun.java.swing.plaf.nimbus.nimbuslookandfeel); catch (throwable

19、e) e.printstacktrace(); eventqueue.invokelater(new runnable() public void run() try keyboardlistener frame = new keyboardlistener(); frame.setvisible(true); catch (exception e) e.printstacktrace(); ); public keyboardlistener() settitle(键盘监听); setdefaultcloseoperation(jframe.exit_on_close); setbounds

20、(100, 100, 250, 160); contentpane = new jpanel(); contentpane.setborder(new emptyborder(5, 5, 5, 5); setcontentpane(contentpane); contentpane.setlayout(new gridlayout(3, 1, 5, 5); jpanel panel1 = new jpanel(); contentpane.add(panel1); jlabel label1 = new jlabel(用户名); panel1.add(label1); textfield =

21、new jtextfield(); panel1.add(textfield); textfield.setcolumns(10); jpanel panel2 = new jpanel(); contentpane.add(panel2); jlabel label2 = new jlabel(密码); panel2.add(label2); passwordfield = new jpasswordfield(); passwordfield.setcolumns(10); panel2.add(passwordfield); jpanel panel3 = new jpanel(); c

22、ontentpane.add(panel3); jbutton button = new jbutton(登录); button.addactionlistener(new actionlistener() public void actionperformed(actionevent e) do_button_actionperformed(e); ); panel3.add(button); protected void do_button_actionperformed(actionevent e) string username = textfield.gettext();/ 获得用户

23、名 string password = new string(passwordfield.getpassword();/ 获得密码 if (username.isempty() | (password.isempty() / 判断用户名或密码是否为空 joptionpane.showmessagedialog(this, 用户名或密码为空!, null, joptionpane.warning_message); return; file file = new file(d:/a1/aaa1.txt);/ 创建文件保存账号信息 date date = new date(); / 创建日期对象

24、string content = 用户名: + username + 登录时间: + date ;/ 获得要写入的字符串 string content1 = username + +password+ + date ;/ 获得要写入的字符串 fileoutputstream fos = null; try fos = new fileoutputstream(file);/ 创建文件输出流对象 fos.write(content.getbytes();/ 将字符串写入到文件中 string filename=d:/a1/aaa2.txt;/以下创建随机文件,用添加方式加入信息 randomac

25、cessfile randomfile = new randomaccessfile(filename, rw); / 文件长度,字节数 long filelength = randomfile.length(); /将写文件指针移到文件尾。 randomfile.seek(filelength); randomfile.writebytes(content1); randomfile.close(); catch (filenotfoundexception e1) e1.printstacktrace(); catch (ioexception e1) e1.printstacktrace

26、(); finally try fos.close();/ 关闭文件输出流 catch (ioexception e1) e1.printstacktrace(); 思考:本程序中输出内容中如果有中文,用第二种方式存入文件时将会是乱码,你能否分析一下是什么原因,有没有解决办法?12、将图片导入到image组件import javax.swing.*;import java.awt.*;public class a1 extends jframeprivate image image;public a1()super(mydisplay);image=toolkit.getdefaulttool

27、kit().getimage(d:/h1/p2/src/a018.jpg);/图片换成你自己的this.setsize(800,600);public void paint(graphics g)g.drawimage(image,0,0,800,600,this);/画图片,这里的paint方法系统自动调用,并且还传递进来了graphics对象,省的再自己用getgraphics方法了。public static void main(string args)new a1().setvisible(true);13_1、反复执行以下借助实现runnable接口实现的多线程程序,记录每次执行时各线程先后执行顺序。记录三次执行各自执行顺序。说明自己的体会。public class twothreadpublic static void main(string args) threadsale t=new threadsale(); /实例化线程 system.out.println(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论