实验五输入输出多线程网络.docx
- 文档编号:4058722
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:75
- 大小:866.36KB
实验五输入输出多线程网络.docx
《实验五输入输出多线程网络.docx》由会员分享,可在线阅读,更多相关《实验五输入输出多线程网络.docx(75页珍藏版)》请在冰豆网上搜索。
实验五输入输出多线程网络
湖北工业大学工程技术学院实验报告
课程名称:
JAVA实验内容:
实验五输入输出多线程网络
学院:
工程技术学院专业班级:
11gb软件2班
教师:
程学先成绩:
一、实验目的:
1、了解对文件、文件夹属性的读、写方法。
2、掌握字节流与字符流的概念及读、写方法。
3、掌握文件读写(顺序与随机)、复制、压缩的程序设计方法。
4、了解图片导入的方法。
5、掌握线程的概念,了解多线程的程序用途与程序设计方法。
6、掌握Applet小程序设计方法。
7、了解图形设计程序设计方法。
二、执行下述程序,说明各程序功能。
如果题后有问题,按问题进行设计并总结。
将每题运行结果复制粘贴到一个Word文件中。
每题注意写明题号(从1到3)。
1、获取某文件夹下某文件的文件名称、父路径、长度、最后修改时间、是否可读、是否可写等信息。
该文件可在自己的机器上任意一个文件夹中任意选一个。
importjava.io.File;
publicclassFileDemo{
publicstaticvoidmain(String[]args){
Filefile=newFile("d:
//h1//echo.txt");
//根据文件全名创建文件对象,文件名称请自己选定后修改,不修改者或不存在着无分
if(file.exists()){//判断该文件是否存在
Stringname=file.getName();//获取文件名称
Stringparent=file.getParent();//获取文件父路径
longleng=file.length();//获取文件长度
booleanbool=file.canWrite();//判断该文件是否可改写
System.out.println("文件名称为:
"+name);//输出信息
System.out.println("文件目录为:
"+parent);
System.out.println("文件大小为:
"+leng+"bytes");
System.out.println("最后修改时间"+file.lastModified());
System.out.println("是否可读"+file.canRead());
System.out.println("是否为可改写文件:
"+bool);
}
}
}
2、获取某盘、某文件夹下全部文件名称。
该文件夹可在自己的机器上任意一个盘中选一个。
对文件目录运行前与运行后抓屏并将抓屏图像贴到Word文件中。
importjava.io.File;
publicclassFileDemo2{
publicstaticvoidmain(String[]args){
Filedir=newFile("E:
//text");
//根据文件路径创建文件对象,,文件夹名称请自己选定后修改,不修改者或不存在着无分
if(dir.isDirectory()){//如果该文件对象指定的是一个目录
File[]files=dir.listFiles();//获取该目录下的抽象路径名数组
for(inti=0;i Filefile=files[i];//获取数据中的元素 System.out.println("第"+(i+1)+"个文件的名称是: "+file.getAbsolutePath()); } } } } 3、利用字节输入流InputStream类从键盘接受字符串在显示器上输出。 importjava.io.IOException; importjava.io.InputStream; publicclassEcho{ publicstaticvoidmain(String[]args){ InputStreamis=System.in;//定义InputStream对象 byte[]bytes=newbyte[1024]; try{ System.out.println("请输入字符串: ");//提示用户输入字符串 is.read(bytes);//将输入的字符串保存在数组中 Stringinput=newString(bytes);//将数组中的内容转换成字符串 System.out.println("您输入的字符串: "+input.trim());//输出字符串 }catch(IOExceptione){ e.printStackTrace(); }finally{ try{ is.close();//释放资源 }catch(IOExceptione){ e.printStackTrace(); } } } } 4、利用字符输入流Reader类的子类InputStreamReader从键盘接受字符串在显示器上输出。 importjava.io.IOException; importjava.io.InputStreamReader; publicclassInputStreamReaderDemo{ publicstaticvoidmain(String[]args){ //创建Reader子类InputStreamReader实例 InputStreamReaderis=newInputStreamReader(System.in); try{ char[]cs=newchar[100];//创建字符数组 System.out.println("请输入字符串: ");//提示用户输入字符串 is.read(cs);//向流中读取数据 Stringinput=newString(cs);//根据读取内容创建字符串 System.out.println("您输入的字符串: "+input.trim());//控制台上输出内容 is.close();//关闭流 }catch(IOExceptione){ e.printStackTrace(); } } } 5、利用字节输出流OutputStream类在显示器上输出字符串。 importjava.io.IOException; importjava.io.OutputStream; publicclassOutputStreamDemo{ publicstaticvoidmain(String[]args){ OutputStreamout=System.out;//实例化OutputStream类 try{//创建byte数组 byte[]bs="本实例使用OutputStream输出流,在控制台输出字符串\n".getBytes(); out.write(bs);//向流中写数据 bs="输出内容: \n".getBytes(); out.write(bs); bs="《Java从基础到项目实战》学好Java的必备书".getBytes(); out.write(bs); }catch(IOExceptione){ e.printStackTrace(); }finally{ try{ out.close();//关闭流 }catch(IOExceptione){ e.printStackTrace(); } } } } 6、利用字符输出流Writer类的子类PrintWriter在显示器上输出字符串。 importjava.io.IOException; importjava.io.PrintWriter; importjava.io.Writer; publicclassPrintWriterDemo{ publicstaticvoidmain(String[]args){ try{ Writerout=newPrintWriter(System.out);//创建PrintWriter实例 char[]cs="本实例使用字符输出流,在控制台输出字符串".toCharArray();//创建字符数组 out.write(cs);//向流中写数据 out.close();//将流关闭 }catch(IOExceptione){ e.printStackTrace(); } } } 7、复制文件,选择本文件夹中某个文件复制生成另一个文件,新文件名自拟。 对文件目录运行前与运行后抓屏并将抓屏图像贴到Word文件中。 1)程序一。 importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; publicclassFileCopyDemo{ publicstaticvoidmain(String[]args){//注意下面的文件名自拟 Filesource=newFile("d: //h1//echo.txt");//创建文件,作为要复制的文件 Filetarget=newFile("d: //h1//echo1.txt");//创建文件,作为新文件名 if(! target.exists()){//如果复制后的文件不存在 try{ target.createNewFile();//创建文件 }catch(IOExceptione){ e.printStackTrace(); } } FileInputStreamfis=null;//创建文件输入流对象 FileOutputStreamfos=null;//创建文件输出流对象 try{ fis=newFileInputStream(source);//实例化文件输入流对象 fos=newFileOutputStream(target);//实例化文件输出流对象 byte[]bytes=newbyte[1024];//创建字节数组 intlength; while((length=fis.read(bytes))! =-1){ fos.write(bytes,0,length);//将源文件内容写入新文件 } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ if(fis! =null){ try{ fis.close();//释放资源 }catch(IOExceptione){ e.printStackTrace(); } } if(fos! =null){ try{ fos.close();//释放资源 }catch(IOExceptione){ e.printStackTrace(); } } } } } 2)程序2.以Buffered方式从一个包含中文文件中按行读出内容,去掉其中空行后写到另一个文件中。 importjava.io.*; importjava.nio.charset.Charset; publicclassFile1{ publicstaticvoidmain(Stringargs[]){ try{ Filef1=newFile("d: \\echo.txt"); BufferedReaderf=newBufferedReader(newFileReader(f1)); //Charsetcs=Charset.forName("UTF-16");//7位ASCII字符 //Charset: 16位的Unicode代码单元序列和字节序列之间的指定映射关系 Charsetcs=Charset.forName("UTF-16");//包括中文格式 BufferedWriterf0=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("d: \\echo.txt"),cs)); Strings,s0=""; inti=0; while((s=f.readLine())! =null){ if(s.length()>0)f0.write(s);//如果不是空行则写 } f.close(); f0.close(); }catch(IOExceptione){ System.err.println("发生异常: "+e); } } } 8、复制文件夹,对文件目录运行前与运行后抓屏并将抓屏图像贴到Word文件中。 importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; publicclassDirectorysCopyDemo{ publicstaticvoidmain(String[]args)throwsIOException{ intcount=0;//注意下面的文件夹名自拟 Filesources=newFile("d: //h1");//源文件夹 Filetargets=newFile("d: //h2");//目标文件夹 if(! targets.exists()){//如果目标文件夹不存在 targets.mkdir();//创建文件夹 } File[]source=sources.listFiles();//获得源文件夹中所有文件 FileInputStreamfis=null; FileOutputStreamfos=null; for(Filefile: source){ fis=newFileInputStream(file);//创建输出流 Filetarget=newFile(targets.getAbsolutePath()+File.separator+file.getName()); if(! target.exists()){ target.createNewFile();//创建新文件 } fos=newFileOutputStream(target); byte[]bytes=newbyte[1024];//创建字节数组 intlength; while((length=fis.read(bytes))! =-1){ fos.write(bytes,0,length);//将源文件内容写入新文件 } System.out.println(file.getName()+"复制完毕! "); count++; } System.out.println("一个复制了"+count+"个文件! "); } } 9、压缩文件夹生成zip文件。 对D盘目录运行前与运行后抓屏并将抓屏图像贴到Word文件中。 importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.util.zip.ZipEntry; importjava.util.zip.ZipOutputStream; publicclassDirectoryZipDemo{ publicstaticvoidmain(String[]args)throwsIOException{ Filesources=newFile("d: /a1");//注意文件夹名自拟 Filetarget=newFile("d: /a1.zip"); File[]source=sources.listFiles(); FileInputStreamfis=null; FileOutputStreamfos=null; ZipOutputStreamzos=null; ZipEntryentry=null; byte[]buffer=newbyte[1024];//创建写入压缩文件的数组 fos=newFileOutputStream(target); zos=newZipOutputStream(fos); for(Filefile: source){ entry=newZipEntry(file.getName()); fis=newFileInputStream(file); zos.putNextEntry(entry); intread=0; while((read=fis.read(buffer))! =-1){ zos.write(buffer,0,read);//将输入写入到压缩文件 } zos.closeEntry();//关闭ZipEntry fis.close();//释放资源 } zos.close(); fos.close(); } } 10、将a1中多个.txt文件合并写到一个文件中。 在D盘建文件夹a1,在其中存放三个java文件,再运行本程序。 对文件目录运行前与运行后抓屏并将抓屏图像贴到Word文件中。 importjava.io.BufferedInputStream; importjava.io.File; importjava.io.FileFilter; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; publicclassFileConcatenation24{ publicstaticvoidmain(String[]args){ FilerootFile=newFile("d: /a1");//获得要合并java文件的文件夹 File[]files=rootFile.listFiles(newFileFilter(){//获取文件夹中所有txt文件 @Override publicbooleanaccept(Filepathname){ if(pathname.getName().endsWith(".java")){//要合并的文件的文件类型 returntrue; }else{ returnfalse; } } }); FileconcatedFile=newFile("d: /a1/a11.txt");//声明合成后的文件 FileInputStreamfis=null; FileOutputStreamfos=null; BufferedInputStreambis=null; try{ fos=newFileOutputStream(concatedFile);//创建文件输出流对象 for(Filefile: files){//遍历所有要合成的文件 fis=newFileInputStream(file);//创建文件输入流 bis=newBufferedInputStream(fis);//利用文件输入流创建缓冲输入流 intlength=0; while((length=bis.read())! =-1){ fos.write(length);//将输入流写入新文件 } } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ if(bis! =null){ try{ bis.close();//关闭缓冲输入流 }catch(IOExceptione){ e.printStackTrace(); } } if(fis! =null){ try{ fis.close();//关闭文件输入流 }catch(IOExceptione){ e.printStackTrace(); } } if(fos! =null){ try{ fos.close();//关闭文件输出流 }catch(IOExceptione){ e.printStackTrace(); } } } } } 11、木马、病毒等常常需要监视键盘操作,例如通过监听登录过程中的用户名与密码,记录下来,达到盗取账号的目的。 本程序未实现监听,只是将用户登录时输入到文本框中的内容(包括用户名、密码、登录时间)记录到文件中。 本程序采用了顺序存取文件与随机文件二种保存方式,后者可以添加新内容到文件尾部,可以保存历史数据。 前者只能保存最后一次登录的数据。 请多次运行登录程序,之后,比较存放在d: \a1\中的aaa1和aaa2二个文本文件中的内容。 学习与比较二种文件存取数据的特点与方法。 packagecom.lw; importjava.awt.*; importjava.awt.event.*; importjava.util.Date; importjava.io.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 输入输出 多线程 网络