Java多线程和输入输出流
java输入输出流实验报告总结

java输入输出流实验报告总结Java输入输出流是Java中非常重要的概念,也是Java程序设计的基础。
在Java 程序中,输入输出流用于处理与设备之间的数据传输,例如键盘、鼠标、文件等。
Java的输入输出流主要包含两种类型:字节流和字符流。
字节流以字节为最小读写单位,而字符流以字符为最小读写单位。
Java的输入流有很多种类型,例如:InputStream、ByteArrayInputStream、FileInputStream等。
这些输入流的共同特点是读取外部数据到程序中。
Java的输出流也有多种类型,例如:OutputStream、ByteArrayOutputStream、FileOutputStream等。
这些输出流的共同特点是将程序中的数据输出到外部。
下面将以实验报告的形式进行总结,详细介绍Java输入输出流的原理和使用方法。
实验一:字节流输入输出1. 实验目的:掌握字节流输入输出的基本使用方法。
2. 实验内容:编写一个程序,实现从文件中读取数据,然后将数据输出到另一个文件中。
3. 实验步骤:a. 创建一个输入流对象,用于读取原始文件的数据。
b. 创建一个输出流对象,用于将读取到的数据输出到目标文件中。
c. 循环读取输入流中的数据,直到读取到文件末尾。
d. 将读取到的数据写入输出流中。
e. 关闭输入流和输出流。
4. 实验结果:成功读取原始文件中的数据,并将数据输出到目标文件中。
实验二:字符流输入输出1. 实验目的:掌握字符流输入输出的基本使用方法。
2. 实验内容:编写一个程序,实现从键盘输入文字,然后将文字输出到屏幕上。
3. 实验步骤:a. 创建一个字符输入流对象,用于读取键盘输入的文字。
b. 创建一个字符输出流对象,用于将读取到的文字输出到屏幕上。
c. 循环读取输入流中的文字,直到读取到换行符。
d. 将读取到的文字写入输出流中。
e. 关闭输入流和输出流。
4. 实验结果:成功从键盘输入文字,并将文字输出到屏幕上。
java常见基础知识笔试题

java常见基础知识笔试题Java常见基础知识笔试题:一、Java基础语法1. 请解释Java中的变量和常量有什么区别?2. 请问Java中的关键字有哪些?请列举出来。
3. 请解释Java中的注释有哪几种形式?4. 请说一下Java的数据类型有哪些?5. 请解释Java中的运算符有哪些?二、面向对象1. 请解释面向对象的三大特性是什么?2. 请解释Java中的继承,多态,封装和抽象类分别是什么?3. 请解释Java中的接口是什么?4. 请解释Java中的重载和重写有什么区别?5. 请解释Java中的构造方法和普通方法有何区别?三、异常处理1. 请解释Java中的异常处理机制是什么?2. 请解释Java中的异常分类有哪些?3. 请解释Java中的异常处理关键字try,catch,finally的作用分别是什么?4. 请解释Java中的自定义异常是什么?5. 请解释Java中的异常链是什么?四、集合类1. 请解释Java中的集合类有哪些?2. 请解释Java中的ArrayList和LinkedList的区别。
3. 请解释HashSet和TreeSet的区别。
4. 请解释HashMap和TreeMap的区别。
5. 请解释Java中如何遍历一个集合?五、多线程1. 请解释Java中的线程是什么?2. 请解释Java中的线程实现方式有哪些?3. 请解释Java中的线程池是什么?4. 请解释Java中的synchronized关键字是做什么的?5. 请解释Java中的volatile关键字是做什么的?六、IO流1. 请解释Java中的IO是什么?2. 请解释Java中的字节流和字符流有什么区别?3. 请解释Java中的输入流和输出流有什么区别?4. 请解释Java中的文件读写操作步骤是什么?5. 请解释Java中的RandomAccessFile是什么?以上是java常见基础知识笔试题。
希望这些问题能够帮助读者熟悉Java的基础语法、面向对象、异常处理、集合类、多线程以及IO流的相关知识,在笔试中更好地发挥自己的能力。
p10

2020年1月5日星期日
5时59分29秒
Java 程序设计
14
10.2.5 多线程的同步
如果采用多线程同步控制机制,等到第一 个线程读取完数据,第二个线程才能处理该 数据,就会避免错误。可见,线程同步是多 线程编程的一个相当重要的技术。
10.2.6 多线程的问题
由于多线程是同时运行于内存中,程序员 必须加倍注意自己的多线程程序,搞清楚它 们之间的关系。否则还是少用几个线程,因 为不是线程越多程序就执行得越快,还有很 多因素决定着程序的执行速度。
l
线程调用了sleep()、join()方法时,线
程进入不可运行状态。
l
线程调用了wait()方法,线程由运行中
状态转入阻塞状态。
l 如果线程使用了synchronized来实现对 象的“互斥锁”联系,当前线程能获得使用 权时,继续为运行中状态,继续执行;若当 前线程没有获得使用权,进入阻塞状态。
若线程中有输入输出操作时,也可进入阻塞状 态,待输入输出结束后,线程进入可运行状 态。
(2)可以分别用Socket类的getInputStream( )和 getOutStream( )方法来发送和捕捉数据。
2020年1月5日星期日
5时59分29秒
Java 程序设计
20
10.3.4 无连接的客户/服务器通过数据报的交互
流式Socket可以实现准确的通信,但是占用资源较 多,在某些无须实时交互的情况下 ,例如收发Email等,采用保持连接的流式通信并不恰当,而应 该使用无连接的数据报方式。
多线程是相对单线程而言的,指的是在一 个程序中可以定义多个线程并同时运行它们, 每个线程可以执行不同的任务。
2020年1月5日星期日
(完整版)5Java第五单元练习题-输入流与输出流

5 Java 输入流与输出流5.1 单项选择题1.实现字符流的写操作类是( A . FileReader B . Writer C)。
. FileInputStream D. FileOutputStream2. 实现字符流的读操作类是( )。
A . FileReaderB . WriterC . FileInputStreamD . FileOutputStream3.凡是从中央处理器流向外部设备的数据流称为() A. 文件流 B. 字符流 C. 输入流 D. 输出流4.构造 BufferedInputStream 的合适参数是哪一个?( ) A . FileInputStream B . BufferedOutputStreamC . FileD . FileOuterStream5.在编写 Java Application 程序时,若需要使用到标准输入输出语句,必须在程序的开头写上( )语句。
D . import java.awt.Graphics ;6.下列流中哪个不属于字符流?( A . InputStreamReaderC . FilterReader 7.流的传递方式是() A. 并行的B. 串行的C. 并行和串行D. 以上都不对8.字符流与字节流的区别在于( )A. 前者带有缓冲,后者没有B. 前者是块读写,后者是字节读写C. 二者没有区别,可以互换使用A . import java.awt.* ;B import java.applet.Applet ;C . import java.io.* ; )B . BufferedReaderD . FileInputStream2D. 每次读写的字节数不同9.下列流中哪个不属于字节流 A . FileInputStream B . BufferedInputStream C. FilterInputStream D. InputStreamReader10.如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象()A . FileInputStreamB . FileOutputStreamC . DataOutputStreamD . FileWriter11. 下列哪一个 import 命令可以使我们在程序中创建输入/ 输出流对象()A .import java.sql.*;B . import java.util.*;C . import java.io.*;D . import .*;12.下面的程序段创建了 BufferedReader 类的对象in ,以便读取本机 c 盘my 文件夹下的文件 1.txt 。
java 标准输入输出流

java 标准输入输出流
计算机系统都有标准的输入设备和标准输出设备。
对一般系统而言,标准输入设备通常是键盘,而标准输出设备是屏幕。
Java程序经常需要从键盘上输入数据,从屏幕上输出数据,为此频繁创建输入/输出流对象将很不方便。
因此,Java语言事先定义好了两个对象,分别对系统的标准输入和标准输出相联系,如System.in和System.out,另外还定义了标准的System.err错误输出流。
System.in是标准输入流,是InputStream类的实例。
可以使用read()方法从键盘上读取字节,也可以将它包装成数据流读取各种类型的数据和字符串。
在使用System.in的read()方法时,由于read()方法在定义时抛出了IOException 异常,所以必须使用try-catch结构捕获异常或声明抛出异常;
System.out和System.err是标准输出流和标准错误输出流,是PrintStream类的实例。
如果从标准输入流键盘上输入基本数据类型,可以将标准输入流包装成具有缓
执行上述代码,结果如图12-12所示。
图12-12 System.in 标准输入流。
输入输出流

public class Files
{
public static void main(String[] args) throws IOException
{
Files f = new Files();
// System.out.println(f.readFile("f:\\LinkFile.java"));
}
}
}
/**
* 检查文件中是否为一个空
* @param filePath
* @param fileName
* @return 为空返回true
* @throws IOException
*/
public boolean fileIsNull(String filePath,String fileName) throws IOException
for(int i=0;i<ss.length;i++)
{
ss[i] = "信息技术和互联网(计算机软硬件,通讯) "+i;
}
f.writeFile("f:\\ss\\","TestFile.txt",ss);
}
/**
* 文件的写入
* @param filePath(文件路径)
/**
* @author zhangqinglin
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
JAVA输入输出流

int read() int read(byte[] buffer) int read(byte[] buffer, int offset, int length)
其它方法:
void close() int available() skip(long n) boolean markSupported() void mark(int readlimit) void reset()
9.4常用输入输出流类(2)
FileReader-文件字符输入流
构造方法: public FileReader(String name) throws FileNotFoundException public FileReader(File file) throws FileNotFoundException
方法:参见InputStream FileOutputStream-文件字节输出流
构造方法: public FileOutputStream(String name) throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException 方法:参见OutputStream
//标准输出流System.out是字节输出流
//把标准输出流转化成缓冲字节输出流 /用BufferedOutputStream中函数Write输出 //数据从缓冲区中全部输出
import java.io.*; public class Test3 { public static void main(String[] args) throws IOException{ String s = "Hello"; OutputStreamWriter o = new OutputStreamWriter(System.out); o.write(s); 把标准字节输出流转化 成字符输出流 o.flush(); } }
(完整版)5Java第五单元练习题-输入流与输出流

5 Java 输入流与输出流 5.1单项选择题 1.实现字符流的写操作类是 (A . FileReader B . Writer C )。
File In putStreamDFileOutputStream 2.实现字符流的读操作类是() A . FileReader B . Writer C . 3 .凡是从中央处理器流向外部设备的数据流称为File In putStream D()FileOutputStream A. 文件流B. 字符流C. 输入流D. 输出流4 .构造 BufferedInputStream 的合适参数是哪一个?( )A . FileI nputStreamB . BufferedOutputStreamC . FileD . FileOuterStream5.在编写Java Application 程序时,若需要使用到标准输入输出语句,头写上()语句。
A . import java.awt.* ; B import java.applet.Applet ;C . import java.io.* ;D . import java.awt.Graphics ;必须在程序的开6 . 下列流中哪个不属于字符流?( )A . In putStreamReaderB . BufferedReadeC . FilterReader 7 .流的传递方式是() rA. 并行的 D . File InputStreamB. 串行的C. 并行和串行D. 以上都不对8.字符流与字节流的区别在于()A. 前者带有缓冲,后者没有B. 前者是块读写,后者是字节读写C. 二者没有区别,可以互换使用D. 每次读写的字节数不同9.下列流中哪个不属于字节流A . FileInputStreamB . BufferedInputStream C. FilterInputStreamD. InputStreamReader10 .如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象( ) A . FileInputStream B . C . DataOutputStream D . FileOutputStreamFileWriter11. 下列哪一个 import 命令可以使我们在程序中创建输入/ 输出流对象 ()12. 下面的程序段创建了 BufferedReader 类的对象 in ,以便读取本机 c 盘 my 文件夹下的文 件 1.txt 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级:13科技2班学号:201324131225 姓名:许耿宁Java多线程和输入输出流一、实验目的:1.熟悉利用Thread类建立多线程方法。
2.熟悉利用Thread接口建立多线程方法。
3.熟悉Java的文件读写机制,练习输入输出流的使用。
二、实验内容:1.阅读下列程序,分析并上机检验其功能。
public class DelayRunnable implements Runnable{private static int count=0;private int no;private int delay;public DelayRunnable(){count++;no=count;}public void run(){try{for (int i=0;i<10;i++){delay=(int)(Math.random()*5000);Thread.sleep(delay);System.out.println("Thread "+no+" with a delay "+delay);}}catch(InterruptedException e){}}}class MyRunnable{public static void main(String args[]){DelayRunnable r1 = new DelayRunnable();DelayRunnable r2 = new DelayRunnable();Thread thread1=new Thread(r1);Thread thread2=new Thread(r2);thread1.start();thread2.start();try{Thread.sleep(1000);}catch(InterruptedException e){System.out.println("Thread wrong");}}}2.将上列程序利用Runnable接口改写,并上机检验。
3.创建简单的程序ThreeThread.java,该程序将创建三个线程,每个线程应当显示它所运行的时间(可以考虑使用Date类或Calendar类)。
4.键盘输入10个整数,从小到大进行排序。
5.接收键盘输入的字符串,用FileInputStream类将字符串写入文件,用FileOutputStream类读出文件内容显示在屏幕上。
6.将一个文本文件的内容按行读出,每读出一行就顺序加上行号,并写入到另一个文件中。
三、实验要求:1.通过实验掌握Thread 、Runnable使用方法;2.程序必须能够实现多线程;3.程序必须能够完成题目要求;4.通过实验掌握文件输入输出流的使用方法;5.程序必须能够从键盘接收字符串并保存在文件中;6.程序必须能够读出文件内容显示在屏幕上;7.写出实验报告。
四、实验代码及截图:第一题:在编译器上运行程序得到截图所示结果:第二题:①实验代码public class DelayThread extends Thread{private static int count=0;private int no;private int delay;public DelayThread(){count++;no=count;}public void run(){try{for (int i=0;i<10;i++){delay=(int)(Math.random()*5000);sleep(delay);System.out.println("Thread "+no+" with a delay "+delay);}}catch(InterruptedException e){}}}class MyThread{public static void main(String args[]){DelayThread thread1=new DelayThread();DelayThread thread2=new DelayThread();thread1.start();thread2.start();try{Thread.sleep(1000);}catch(InterruptedException e){System.out.println("Thread wrong");}}}②实验结果截图:第三题:①实验代码:public class MultiThread {static Lock mylock;public static void main(String[] args) {RunningObject1 r1 = new RunningObject1();Thread t1 = new Thread(r1, "t1");Thread t2 = new Thread(r1, "t2");Thread t3 = new Thread(r1, "t3");t1.start();t3.start();t2.start();}static class RunningObject1 implements Runnable {public void run() {synchronized(this){String name=Thread.currentThread().getName();System.out.println(name+"开始时间:"+Calendar.getInstance().getTimeInMillis());for (int i = 0; i < 100000000; i++) {if (i == 9999999) {System.out.println(name+"结束时间:"+Calendar.getInstance().getTimeInMillis());break;}}}}}}②实验结果截图:第四题:①实验代码:public class Test1 {public static void main(String[] args) throws IOException{BufferedReader br=new BufferedReader(new InputStreamReader(System.in));String str;int array[]=new int[10];for(int i=0;i<10;i++){int a=i+1;System.out.println("请输入第"+a+"整数:");str=br.readLine();array[i]=Integer.parseInt(str);}for(int j=0;j<9;j++){for(int k=j+1;k<10;k++){if(array[k]<array[j]){int temp=array[k];array[k]=array[j];array[j]=temp;}}}for(int m=0;m<10;m++){if(m!=9)System.out.print(array[m]+",");elseSystem.out.print(array[m]);}}}②实验结果截图:第五题:①实验代码:public class Test2 {public static void main(String[] args) {try {System.out.println("请输入内容:");File myfile = new File("save.txt");byte[] outCh = new byte[100];int bytes = System.in.read(outCh, 0, 100);//将文件读入二进制数组中FileOutputStream Fout = new FileOutputStream(myfile);Fout.write(outCh,0,bytes);//将数组中的字节输入到这个流中byte[] inCh = new byte[bytes];FileInputStream Fin = new FileInputStream(myfile);Fin.read(inCh);System.out.println("读取文件内容:");System.out.println(new String(inCh));} catch (IOException e) {System.out.println(e.toString());}}}②实验结果截图:第六题:①实验代码:public class Test3 {public static void main(String[] args) throws IOException{ String str=null;FileReader file=new FileReader("F://1.txt");FileWriter b=new FileWriter("F://2.txt");BufferedWriter c=new BufferedWriter(b);LineNumberReader in=new LineNumberReader(file);while((str=in.readLine())!=null){System.out.println(in.getLineNumber()+":"+str);c.write(str);c.newLine();}c.close();in.close();}}②实验结果截图:五、总结这次实验不难,参考书上的内容就可以很容易的做出来了。
通过这次实验,我熟悉了利用Thread类建立多线程方法;熟悉了利用Thread接口建立多线程方法;熟悉了Java的文件读写机制,练习输入输出流的使用。