Java实验指导(4)-io流

合集下载

Java IO流的基本知识总结。。。。。

Java IO流的基本知识总结。。。。。

Java IO流的基本知识●对一下几个类的理解:⏹类File⏹类FileInputStream:类 FireOutputStream :BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组和行的高效读取。

通常采用此操作时常常将BufferedReader包装其所有read()操作以提高开销很高的Reader(如FileReader ,Inputstream Reader)。

具体实现:BufferdReader br = new BufferdReader (new FileReader(“Sharon.text”)); “Sharon.text”为文件名BufferedWriter:将文本将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小。

在大多数情况下,默认值就足够大了。

该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。

并非所有平台都使用新行符 ('\n') 来终止各行。

因此调用此方法来终止每个输出行要优于直接写入新行符。

通常 Writer 将其输出立即发送到底层字符或字节流。

除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。

例如,PrintWriter out= new PrintWriter(new BufferedWriter(newFileWriter("foo.out")));⏹DataInputStream:数据输入流允许应用程序对于底层输入流中基本数据的读取。

⏹DataInputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。

io流实验报告心得

io流实验报告心得

io流实验报告心得在进行io流实验的过程中,我学到了很多关于输入输出流的知识,也对其使用方法有了更深入的了解。

通过这次实验,我不仅巩固了之前学到的知识,还学到了一些新的技巧和注意事项。

我了解到io流是用于处理输入输出的一种机制,它把数据从一个地方传输到另一个地方。

在实验中,我通过使用FileInputStream和FileOutputStream类来创建输入输出流对象,并使用它们来读取和写入数据。

通过使用这些类,我可以操作各种类型的文件,包括文本文件和二进制文件。

在实验的过程中,我发现输入输出流的使用是非常灵活的。

无论是读取文件还是写入文件,都可以根据具体的需求选择合适的方法和参数。

例如,通过使用BufferedReader类,我可以一次读取一行文本,而不是逐个字符读取。

这样可以提高效率,并且使代码更加简洁易读。

我还学到了一些关于异常处理的知识。

在实验中,我发现在使用io 流时,很容易出现各种异常,例如文件找不到、文件权限不足等。

为了避免程序崩溃,我学会了使用try-catch语句来捕获和处理这些异常。

通过使用这些语句,我可以在出现异常时进行相应的处理,例如输出错误信息或者进行重试操作。

在实验中,我还学到了关于流的关闭操作。

在使用io流时,一定要记得在使用完毕后关闭流,以释放系统资源。

我学会了使用try-finally或try-with-resources语句来确保流的正确关闭。

这样可以避免资源泄漏的问题,同时也可以提高程序的性能。

通过这次实验,我还了解到了一些关于文件的操作。

在实验中,我学会了如何创建文件和文件夹,如何遍历文件夹中的文件,以及如何删除文件和文件夹。

这些知识对于日常的文件操作非常有用,可以帮助我们更好地管理和处理文件。

总的来说,通过这次io流实验,我对输入输出流有了更深入的了解,学到了一些新的技巧和注意事项。

我相信这些知识将在我的编程生涯中发挥重要的作用。

同时,这次实验也让我更加熟悉了Java编程语言,提高了我的编程能力。

io流的read方法

io流的read方法

io流的read方法【实用版2篇】目录(篇1)1.IO 流的概念2.IO 流的 read 方法3.read 方法的参数4.read 方法的返回值5.read 方法的示例正文(篇1)1.IO 流的概念IO 流(Input/Output Stream)是 Java 中用于读取和写入数据的抽象类。

IO 流是抽象类,因此不能被实例化。

IO 流提供了从字节流和字符流两个子类,分别用于处理字节和字符数据。

2.IO 流的 read 方法IO 流的 read 方法是用于读取数据的方法,可以从字节流和字符流中读取数据。

该方法在不同的子类中有不同的实现。

3.read 方法的参数read 方法的参数如下:- b:一个字节类型的数据,表示从流中读取的字节数据。

- offset:表示从流的哪个位置开始读取数据。

- length:表示要读取的数据的长度。

4.read 方法的返回值read 方法的返回值如下:- 如果成功读取到数据,返回实际读取到的数据长度;- 如果读取的数据长度小于指定长度,返回实际读取到的数据长度;- 如果读取的数据长度为负数,表示已经读取到文件末尾;- 如果发生错误,返回 -1。

5.read 方法的示例下面是一个使用 FileInputStream 和 BufferedInputStream 读取文件的示例:```javaimport java.io.*;public class ReadExample {public static void main(String[] args) {try {FileInputStream fis = newFileInputStream("example.txt");BufferedInputStream bis = new BufferedInputStream(fis);byte[] buffer = new byte[1024];int length = bis.read(buffer);while (length!= -1) {System.out.println(new String(buffer, 0, length));length = bis.read(buffer);}bis.close();} catch (IOException e) {e.printStackTrace();}}}```在这个示例中,我们使用 FileInputStream 和BufferedInputStream 读取文件。

java io流 详解

java io流 详解

java io流详解JavaIO流是Java编程语言中用于输入和输出数据的一种重要机制。

通过使用IO流,可以轻松地从文件中读取数据、向文件中写入数据,或者通过网络与其他程序进行数据交换。

在Java中,IO流是基于抽象数据类型`java.io.InputStream`和`java.io.OutputStream`实现的。

这些流类提供了一组通用的接口,使得开发者可以方便地处理各种类型的输入输出数据。

一、基本概念JavaIO流提供了一组不同的类型,包括字节流、字符流、缓冲流等。

每种类型都有其特定的用途和性能特点。

在使用IO流时,需要明确数据传输的目标和来源,并根据数据类型选择适当的流类型。

二、常用流类1.`java.io.InputStream`和`java.io.OutputStream`:这两个类是所有IO流的基类,用于处理数据的输入和输出。

它们提供了一组抽象方法,用于读取和写入数据。

2.`java.io.FileInputStream`和`java.io.FileOutputStream`:这两个类分别用于从文件中读取数据和向文件中写入数据。

它们是基于文件路径创建的实例,可以方便地操作文件系统中的数据。

3.`java.io.BufferedInputStream`和`java.io.BufferedOutputStream`:这两个类是缓冲流,它们提供了一个缓冲区,可以在一次操作中同时读取或写入多个数据项,从而提高输入输出效率。

4.`.Socket`和`.ServerSocket`:这两个类用于通过网络进行数据传输。

`Socket`用于客户端与服务器之间的通信,而`ServerSocket`用于服务器端监听来自客户端的连接请求。

三、使用示例下面是一个简单的Java程序,演示了如何使用IO流从文件中读取数据:```javaimportjava.io.*;publicclassReadFileExample{publicstaticvoidmain(String[]args){try{FileInputStreamfileInputStream=newFileInputStream("exampl e.txt");intdata;while((data=fileInputStream.read())!=-1){System.out.print((char)data);}fileInputStream.close();}catch(IOExceptione){e.printStackTrace();}}}```在上面的示例中,首先创建了一个`FileInputStream`对象,用于从名为"example.txt"的文件中读取数据。

IO流编程实验报告

IO流编程实验报告

JAVA网络编程实验报告(二)实验题目:指导老师:实验类型:实验地点:专业班级:姓名:2015年5月22日实验二:I/0 流编程一、实验目的1.了解Java输入输出流式原理。

2.熟悉常用流类的基础知识及其使用。

3.掌握文件处理涉及的几个流类。

二、实验内容1.编写一个文件复制的程序,将已存在的一个文本文件复制到另外文件中。

2.将1题中的复制文件按行输出到屏幕上。

三、实验代码1、文件复制代码import java.io.*;public class CopyTextbyBuf {public static void main(String[] args){BufferedWriter bufw = null;BufferedReader bufr = null;try{bufw = new BufferedWriter(new FileWriter("ps_Copy.txt"));bufr = new BufferedReader(new FileReader("ps.txt"));String line = null;while ((line = bufr.readLine())!=null){bufw.write(line);bufw.newLine();bufw.flush();}}catch (IOException e){throw new RuntimeException("读写异常");}finally{if (bufw!=null){try{bufw.close();}catch (IOException e){throw new RuntimeException("写入关闭失败");}}if (bufr!=null){try{bufr.close();}catch (IOException e){throw new RuntimeException("读取关闭失败");}}}}}2、文件输出屏幕代码import java.io.*;public class CopyFile2 {public static void main(String[] args){try {String line=null;BufferedReader bufr=new BufferedReader(new FileReader("ps.txt"));while ((line=bufr.readLine())!=null){System.out.println(line+"\r\n");}bufr.close();System.out.println("文件复制成功!");}catch (FileNotFoundException e){e.printStackTrace();System.out.println("文件路径错误!");}catch (IOException e){e.printStackTrace();System.out.println("文件读取失败!");}}} 四、运行结果1、文件复制结果(1)运行结果(2)运行后的文件五、实验总结:通过这次的实验,我对程序的输入输出原理有了进一步的认识和掌握。

java io流的用法

java io流的用法

java io流的用法Java IO流是Java编程中重要的一部分,它提供了丰富的功能,用于处理输入和输出。

本文将介绍Java IO流的基本用法和常见操作。

一、字节流和字符流的区别在Java IO流中,有字节流和字符流两种类型。

字节流用于处理字节数据,而字符流用于处理字符数据。

虽然字符数据可以通过字节流进行处理,但字符流更适合处理文本数据,因为它能够更好地处理字符编码和换行符等特殊字符。

二、字节流的用法字节流主要包括InputStream和OutputStream两个抽象类,分别用于从输入源读取数据和向输出目标写入数据。

常用的字节流有FileInputStream、FileOutputStream和ByteArrayInputStream、ByteArrayOutputStream等。

以文件操作为例,使用字节流读取文件的基本步骤如下:1. 创建一个File对象,指定要读取的文件路径。

2. 创建一个FileInputStream对象,将File对象作为参数传入构造方法。

3. 创建一个字节数组用于存储读取到的数据。

4. 使用read()方法读取字节数据,并将读取到的数据存入字节数组中。

使用字节流写入文件的基本步骤如下:1. 创建一个File对象,指定要写入的文件路径。

2. 创建一个FileOutputStream对象,将File对象作为参数传入构造方法。

3. 创建一个字节数组,将要写入的数据转换为字节数组。

4. 使用write()方法将字节数组写入输出流。

5. 写入结束后,关闭输出流。

三、字符流的用法字符流主要包括Reader和Writer两个抽象类,用于读取和写入字符数据。

常用的字符流有FileReader、FileWriter和BufferedReader、BufferedWriter等。

使用字符流读取文件的基本步骤如下:1. 创建一个File对象,指定要读取的文件路径。

2. 创建一个FileReader对象,将File对象作为参数传入构造方法。

javaio流总结

javaio流总结

javaio流总结
Java 中的 I/O 流指的是输入和输出流,用于在程序中进行数
据的输入和输出操作。

它们被用来处理文件、网络连接、系统输入
输出等。

I/O 流可以分为字节流和字符流两种类型。

字节流以字节为单位进行操作,适用于处理二进制数据和非文
本文件。

常用的字节流包括 FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream 等。

字符流以字符为单位进行操作,适用于处理文本文件。

常用的
字符流包括 FileReader、FileWriter、BufferedReader、BufferedWriter 等。

I/O 流的操作可以分为输入和输出两种。

输入流用于从外部读
取数据到程序中,而输出流用于将程序中的数据写出到外部。

在使
用完 I/O 流后,需要及时关闭流以释放资源。

此外,Java 7 引入了 NIO(New I/O)包,提供了更灵活、高
效的 I/O 操作方式。

NIO 中引入了通道(Channel)和缓冲区(Buffer)的概念,可以更好地支持非阻塞 I/O 操作。

总的来说,Java 的 I/O 流提供了丰富的功能和灵活的操作方式,能够满足不同场景下的输入输出需求。

要根据具体的需求选择合适的流类型,并注意及时关闭流以避免资源泄露。

【黑马程序员】Java IO流学习总结

【黑马程序员】Java IO流学习总结

【黑马程序员】Java IO流学习总结Java流操作有关的类或接口:Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。

即数根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

IO流的分类•根据处理数据类型的不同分为:字符流和字节流•根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。

本质节流和字符流的区别:•读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映•处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能结论:只要是处理纯文本数据,就优先考虑使用字符流。

除此之外都使用字节流。

输入流和输出流对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据Java IO流对象1.输入字节流InputStream IO 中输入字节流的继承图可见上图,可以看出:1 InputStream 是所有的输入字节流的父类,它是一个抽象类。

2 ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它本地文件中读取数据。

PipedInputStream 是从与其它线程共用的管道中读取数据,与P 3 ObjectInputStream 和所有FilterInputStream 的子类都是装饰流(装饰器模式的主角)。

2.输出字节流OutputStreamIO 中输出字节流的继承图可见上图,可以看出:1 OutputStream 是所有的输出字节流的父类,它是一个抽象类。

2 ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、PipedOutputStream 是向与其它线程共用的管道中写入数据,3 ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4:输入输出流一、实验目的1.理解I/O流的概念,掌握其分类,掌握Java I/O基本原理。

2.掌握对硬盘上的文件和目录进行操作的基本方法。

3.掌握FileInputStream、FileOutputStream类的基本使用方法。

4.掌握FileReader类、FileWriter类的使用。

5.掌握BufferedWriter类、BufferedWriter类的使用。

6.掌握RandomAccessFile类的使用。

7.掌握对象序列化的方法及ObjectInputStream、ObjectOutputStream类的基本使用方法。

二、实验要求本次实验要求以Eclipse为开发平台。

三、实验内容与步骤1.编写一个Java Application程序,实现如下的设计功能:运行该程序可以列出当前目录下的所有文件。

import java.io.*;public class sy1 {public static void main(String args[]){File file= new File("D:\\");file.mkdir();File[]f1=file.listFiles();for(int i=0;i<f1.length;i++){if(f1[i].isDirectory()){"dirctory is"+f1[i].getName());}else{"flie is"+f1[i].getName());}}}}2.编写一个Java Application程序(文件名为CopyFile.java),要求通过字节流从该文件中读取数据并写入到“temp.txt”文件中去,实现该文件的复制。

import java.io.*;public class CopyFile {public static void main(String args[]){int a;byte[] b="你好吗,逗比".getBytes();try{FileOutputStream out=new FileOutputStream("D:\\");out.write(b);out.close();}catch(IOException e){"error"+e);}}}3.编写一个程序(文件名为ReadExample.java),将程序文件本身的内容每行开头添加上行号拷贝到另一个文件tempfile.txt中。

import java.io.*;public class ReadExample {public static void main(String args[]){int a;char[] b=new char[18];try{File f=new File("D:\\");FileReader in=new FileReader(f);FileWriter out=new FileWriter("D:\\");while((a=in.read(b,0,18))!=-1){String s=new String(b,0,18);out.write(b);;}in.close();out.close();}catch(IOException e){"error"+e);}}}4.现在有如下格式的学生成绩单(文本格式)score.txt:姓名:张三,数学72分,物理67分,英语70分.姓名:李四,数学92分,物理98分,英语88分.姓名:周五,数学68分,物理80分,英语77分.要求按行读入成绩单,并在该行的后面加上该运动员的总成绩,然后再将该行写入到一个名字为socreAnalysis.txt的文件中。

请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序。

Fenxi.java文件清单:import java.util.*;public class Fenxi {public static int getTotalScore(String s) {String regex="[^09]" ; //匹配非数字的正则表达式String digitMess=s.replaceAll(regex,"*");StringTokenizer fenxi = new StringTokenizer(digitMess,"*");int totalScore=0;while(fenxi.hasMoreTokens()){int score = Integer.parseInt(fenxi.nextToken());totalScore = totalScore+score; }return totalScore;}}AnalysisResult.java文件清单:import java.io.*;import java.util.*;public class AnalysisResult {public static void main(String args[]) {File fRead = new File("score.txt");File fWrite = new File("socreAnalysis.txt");try{Writer out = 【代码1】//创建指向文件fWrite的文件输出流对象out BufferedWriter bufferWrite = 【代码2】//创建指向out的bufferWrite 流Reader in = 【代码3】//创建指向文件fRead的文件输入流对象in BufferedReader bufferRead =【代码4】//创建指向in的缓冲流String str = null;while((str=bufferRead.readLine())!=null) {int totalScore=Fenxi.getTotalScore(str);str = str+"总成绩:"+totalScore;;bufferWrite.write(str);bufferWrite.newLine();}bufferRead.close();bufferWrite.close();}catch(IOException e) {;}}}class AnalysisResult {public static void main(String args[]) {File fRead = new File("D:\\");File fWrite = new File("D:\\");try{Writer out =new FileWriter(fWrite);BufferedWriter bufferWrite =new BufferedWriter(out);Reader in =new FileReader(fRead);BufferedReader bufferRead =new BufferedReader(in);String str = null;while((str=bufferRead.readLine())!=null) {int totalScore=Fenxi.getTotalScore(str);str = str+"总成绩:"+totalScore;;bufferWrite.write(str);bufferWrite.newLine();}bufferRead.close();bufferWrite.close();}catch(IOException e) {;}}}5.编写一个程序,利用缓冲流实现接收键盘输入的数据,并写入到指定文件中(如当前目录下的tt.txt文件)的功能,要求键盘输入”exit”时结束。

(提示:)import java.io.*;import ;public class sy5 {public static void main(String args[]) {Scanner sc=new Scanner(System.in);String s = sc.next();try{FileWriter out=new FileWriter("D:\\");while(s=="exit"){BufferedWriter br=new BufferedWriter(out);br.write(s);s=sc.next();}}catch(IOException e){"error"+e);}}}6.下面的程序使用随机流进行文件的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序,使得程序在控制台的输出结果如下:程序清单:import java.io.*;public class testRandom2 {public static void main(String args[]) {try {RandomAccessFile rf = new RandomAccessFile("rtest.dat", "rw");for (int i = 0; i < 10; i++) {rf.writeInt(i);rf.writeDouble(i * 1.414);}rf.close();rf = new RandomAccessFile("rtest.dat", "rw");rf.seek (【代码1】);rf.writeInt(47);rf.writeDouble(47.00021);rf.close();rf = new RandomAccessFile("rtest.dat", "r");for (int i = 0; i < 10; i++) {;"Value " + rf.readInt() + ": "+【代码2】);}rf.【代码3】;} catch (IOException e) {;}}}import java.io.*;public class testRandom2 {public static void main(String args[]) {try {RandomAccessFile rf = new RandomAccessFile("rtest.dat", "rw");for (int i = 0; i < 10; i++) {rf.writeInt(i);rf.writeDouble(i * 1.414);}rf.close();rf = new RandomAccessFile("rtest.dat", "rw");rf.seek (0);rf.writeInt(47);rf.writeDouble(47.00021);rf.close();rf = new RandomAccessFile("rtest.dat", "r");for (int i = 0; i < 10; i++) {;"Value " + rf.readInt() + ": "+rf.readDouble());}rf.close();} catch (IOException e) {;}}}7. 下面的程序使用对象的序列化及对象流进行对象的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序。

相关文档
最新文档