淘先锋技术网

首页 1 2 3 4 5 6 7

2011 北京电大 Java 语言与面向对象程序设计基础实验四《Java 语言与面向对象程序设计基础》课程 实验报告四 姓名:xx 学号:10110014xxxx实验题 1 [实验要求] 在“C:\Test“目录中新建“a.txt“文件,并存入 26 个英文大写字母。 [实验程序] Test4_1.java import java.io.*; public class Test4_1 { public static void main(String[] args) { try { File myDir=new File(“C:/Test“); if ( !myDir.exists()) myDir.mkdir(); else if ( !myDir.isDirectory()) { System.err.println(“ 'C:/Test' is not a directory“); return; } File f=new File(myDir,“a.txt“); f.createNewFile(); FileWriter out = new FileWriter(f); for (int i=0;i<26;i++){ out.write((char)('A'+i)); } out.close(); } catch (IOException e) { System.out.println(e); } } } [运行结果] [实验结论与收获] 1、学习了 java 输入输入出 IO 流创建文件夹判断文件写入文件。 实验题 2 [实验要求] 将实验 1 题中新建的“a.txt“文件内容复制到“C:\Test\Ex“目录中“b.txt“文件中。 [实验程序] Test4_2.java import java.io.*; public class Test4_2 { public static void main(String[] args) { try { File myDir=new File(“C:/Test/Ex“); if ( !myDir.exists()) myDir.mkdir(); else if ( !myDir.isDirectory()) { System.err.println(myDir+ “ is not a directory“); return; } File myFile =new File(myDir,“b.txt“); myFile.createNewFile(); FileReader in= new FileReader(“C:/Test/a.txt“); BufferedReader bufIn = new BufferedReader(in); FileWriter out= new FileWriter (myFile); BufferedWriter bufOut= new BufferedWriter(out); String line; line = bufIn.readLine(); //System.out.println(line); while ( line!= null ) { System.out.println(line); bufOut.write(line,0,line.length()); bufOut.newLine(); line = bufIn.readLine(); } bufIn.close(); bufOut.close(); } catch (IOException e) { System.out.println(e); } } } [运行结果] [实验结论与收获] 1、学习了 java 的 IO 流读写的方法。 实验题 3 [实验要求] 将实验 1 题中新建的“a.txt”文件中写入字符“*”,替换第 6 个字符。 [实验程序] import java.io.*; public class Test4_3 { public static void main(String[] args) { try { RandomAccessFile r = new RandomAccessFile(“C:/Test/a.txt“,“rw“); r.seek(5); r.write('*'); r.close(); } catch (IOException e) { System.out.println(e); } } } [运行结果] [实验结论与收获] 1、学习了 java RandomAccessFile 类的使用。 实验题 4 [实验要求] • 调试并记录多线程程序(生产者/消费者实例)结果。 • 体会多线程机制。 [实验程序] Producer.java class Producer implements Runnable{ SStack theStack; public Producer(SStack s){ theStack = s; } public void run(){ char c; for(int i=0; i<20; i++){ c =(char)(Math.random()*26+'A'); theStack.push(c); System.out.println(“Produced: “+c); try{ Thread.sleep((int)(Math.random()*100)); }catch(InterruptedException e){} } } } Consumer.java class Consumer implements Runnable{ SStack theStack; public Consumer(SStack s){ theStack = s; } public void run(){ char c; for (int i=0;i<20;i++) { c = theStack.pop(); System.out.println(“Consumed: “+c); try{ Thread.sleep((int)(Math.random()*1000)); }catch(InterruptedException e){} } } } SStack.java class SStack{ private int index = 0; private char []data = new char[10]; public synchronized void push(char c){ while(index == data.length){ try{ this.wait(); }catch(InterruptedException e){ } } this.notify(); data[index] = c; index++; } public synchronized char pop(){ while(index ==0){ try{ this.wait(); }catch(InterruptedException e){ } } this.notify(); index--; return data[index]; } } STest.java public class STest{ public static void main(String args[]){ SStack stack = new SStack(); Runnable p=new Producer(stack); Runnable c = new Consumer(stack); Thread t1 = new Thread(p); Thread t2 = new Thread(c); t1.start(); t2.start(); } } [运行结果] [实验结论与收获] 1、学习了体会多线程机制。

展开阅读全文