实验指导书:实验9 Java输入输出流

合集下载

实验9 Java输入输出流

实验9 Java输入输出流

山西大学计算机与信息技术学院实验报告姓名学号专业班级课程名称 Java实验实验日期成绩指导教师批改日期实验名称实验9 Java的输入输出流●实验目的1. 理解I/O流的概念,掌握其分类2. 掌握文本文件读写、二进制文件读写●实验内容1. 分别使用FileWriter 和BufferedWriter 往文件中写入1万个随机数,比较用时的多少?(用时采用方法System.currentTimeMillis())求时间差;使用:FileWriter程序源代码程序运行结果贴图使用:BufferedWriter程序源代码程序运行结果贴图2.课本P547,19.2 :编写一个文件,如果文件Exercise 19_2.dat 不存在,就创建一个名为Exercise 19_2.txt的文件。

向这个文件追加新数据。

使用二进制I/O将100个随机生成的整数写入这个文件中。

程序源代码程序运行结果贴图3.课本P547 19.3:(对二进制数据文件中的所有数据求和)假设已经使用DataOutputStream中的writeInt(int)创建一个名为Exercise 19_3.dat的二进制数据文件,文件包含数目不确定的整数,编写一个程序来计算这些整数的总和。

程序源代码程序运行结果贴图4.在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。

程序源代码程序运行结果贴图5.编写一个Java应用程序,给当前的类所在的文件ReadExample.java添加行号拷贝到另一个文件temp.text。

程序源代码程序运行结果贴图P547 19.5(将对象和数组存储在文件中)编写一个程序,向一个名为Exercise19_5.dat的文件中存储一个含5个int值1,2,3,4,5的数组,存储一个表示当前时间的Date对象,存储一个double值5.5程序源代码程序运行结果贴图P548 19.12(组合文件)编写一个工具程序,使它能够用下面的命令,将文件组合在一起构成一个新文件:java Exercise19_12 SourceFile1…SourceFilen TargetFile这个命令将 SourceFile1,…,SourceFilen合并为TargetFile。

java 输入输出流实验

java 输入输出流实验
clip.open(AudioSystem.getAudioInputStream(voiceFile));
}
catch(Exception exp){}
clip.start();
voiceWord.setEnabled(true);
}
}6.实验指导
(1)BufferedReader对象调用readLine方法可读取文件中的一行内容。
catch(IOException exp){}
}
}
public void run()
{
voiceWord.setEnabled(false);
try{
if(clip!=null)
{
clip.close();
}
clip=AudioSystem.getClip();
File voiceFile=new File(showWord.getText().trim()+".wav");
add(pCenter,BorderLayout.CENTER);
menubar=new JMenuBar();
menu=new JMenu("帮助");
help=new JMenuIter("关于学单词");
help.addActionListener(this);
menu.add(help);
menubar.add(menu);
FileReader类是Reader的子类,该类创建的对象称为文件字符输入流。文件字符输入流按字符读取文件中的数据。FileReader流按顺序读取文件,只要不关闭流,每次调用读取方法时FileReader流就会依次读取文件中其余的内容,直到文件的末尾或流被关闭。

实验9 Java输入输出流

实验9 Java输入输出流

山西大学计算机与信息技术学院实验报告姓名学号专业班级课程名称 Java实验实验日期2013-12-4 成绩指导教师批改日期实验名称实验9 Java的输入输出流●实验目的1. 理解I/O流的概念,掌握其分类2. 掌握文本文件读写、二进制文件读写●实验内容1. 分别使用FileWriter 和BufferedWriter 往文件中写入1万个随机数,比较用时的多少?(用时采用方法System.currentTimeMillis())求时间差;使用:FileWriter程序源代码package a;import java.io.*;public class Filewriter {public Filewriter(String string){}public static void main(String[] args)throws IOException {long time =System.currentTimeMillis();Filewriter filewriter=new Filewriter("text");int num;for(int i=0;i<=10000;i++){num=(int)Math.random()*10000;filewriter.write(num+" ");}filewriter.close();time=System.currentTimeMillis()-time;System.out.println("使用Filewriter所用时间:"+time+"um");}private void write(String string){}private void close(){}}程序运行结果贴图使用:BufferedWriter程序源代码package a;public class Bufferwriter {public Bufferwriter(String string){}public static void main(String[] args) {long time=System.currentTimeMillis();Bufferwriter a=new Bufferwriter("a.txt");int num;for(int i=0;i<=10000;i++){num=(int)Math.random()*10000;a.write(num+" ");}a.close();time=System.currentTimeMillis()-time;System.out.println("使用Bufferwriter所用时间:"+time+"um"); }private void write(String string){}private void close(){}}程序运行结果贴图2.课本P547,19.2 :编写一个文件,如果文件Exercise 19_2.dat 不存在,就创建一个名为Exercise 19_2.txt的文件。

Java输入输出流

Java输入输出流

Java输⼊输出流1.基础概念流:⼀组有序的数据结构,将数据从⼀个地⽅带到另⼀个地⽅。

根据数据流向的不同,可以分为输⼊流和输出流。

Java程序通过流完成输⼊/输出,所有的输⼊/输出都以流的形式处理。

(数据流是Java进⾏I/O操作的对象)1. 按照流的⽅向主要分为输⼊流和输出流两⼤类。

2. 数据流按照数据单位的不同分为字节流和字符流。

3. 按照功能可以划分为节点流和处理流。

数据流处理流程数据流的处理只能按照数据序列的顺序来进⾏,即前⼀个数据处理完之后才可处理后⼀个数据。

数据流以输⼊流的形式被程序获取,再以输出流的形式输出到其他设备。

输⼊/输出流模式如下:Java流相关的类都封装在java.io包中,且每个数据流都是⼀个对象。

1-输⼊流所有输⼊流都是InputStream抽象类(字节输⼊流)和Reader抽象类(字符输⼊流)的⼦类。

InputStream类的层次结构及常⽤⽅法如下:2-输出流所有输出流类都是OutputStream抽象类(字节输出流)和Writer抽象类(字符输出流)的⼦类。

OutputStream类的层次结构及常⽤⽅法:注:从本质上来讲,写数据(即输出)的时候,字节也好,字符也好,本质上都是没有标识符的,需要去指定编码⽅式。

但读数据的时候,如果我们需要去“看数据”,那么字节流的数据需要指定字符编码⽅式,这样我们才能看到我们能识别的字符(否则乱码);⽽字符流,因为已经选择好了字符编码⽅式,通常不需要再改了2.Java系统流Java程序运⾏时⾃带有⼀个系统流(对应类ng.System)。

该类封装了Java程序运⾏时的三个系统流(作⽤域为public和static):1. System.in:标准输⼊流,默认设备为键盘2. System.out:标准输出流,默认设备为控制台。

3. System.err:标准错误流,默认设备是控制台。

3.Java File(⽂件操作类)File类是Java.io包中唯⼀代表磁盘⽂件本⾝的对象(File类不能访问⽂件内容本⾝,需使⽤输⼊/输出流访问)File类的三种构造⽅法:1. File(String path):path可为⽬录/⽂件,File对象标识的就是⽬录/⽂件为⽂件时idea中默认路径为⼯程路径2. File(String path, String name):path是路径,name是⽂件名3. File(File dir, String name):dir是路径对象,name是⽂件名File类两个常⽤常量如下:1. public static final String pathSeparator:分隔连续多个路径字符串的分隔符(win下为;)2. public static final String separator:分隔同意路径字符串中的⽬录(win下为/)注:win中⽂件⽬录D:\xxx\xx,Java中使⽤时\应为/或\File类常⽤⽅法如下:通过遍历⽬录可以在指定的⽬录中查找⽂件或显⽰所有⽂件列表,有如下两种重载形式1. String[] list() 返回File对象表⽰⽬录中所有⽂件和⼦⽬录名称的字符串数组(null)eg.String path = "D:/IdeaProject/";File ff = new File(path);String[] FileList = ff.list();for(String str: FileList){System.out.println(str + (new File(path, str).isFile()? "⽂件": "⽂件夹"));System.out.println(str + "字节长度为" + (new File(path, str).length()));}2. String[] list(FilenameFilter filter) 返回数组中仅包含filter过滤器的⽂件和⽬录(null则接受所有名称)注:需先实现java.io.FilenameFilter接⼝,然后将过滤类传递给list⽅法(FileStream)@Override public boolean accept(File dir, String name) { return name.endsWith(".idea") || name.endsWith(".txt"); }也可在list中直接实现接⼝String[] filterList = ff.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".idea") || name.endsWith(".txt"); } });eg.String[] filterList = ff.list(new FileStream());for(String str: filterList){System.out.println(str + (new File(path, str).isFile()? "⽂件": "⽂件夹"));System.out.println(str + "字节长度为" + (new File(path, str).length()));}4.Java动态读取⽂件内容⽂件的输⼊和输出主要通过Scanner类从⽂件中读取⽂本数据;PrintWriter类向⽂本写⼊数据PrintWriter output = new PrintWriter(file);Scanner input = new Scanner(file);使⽤try-with-resources⾃动关闭资源AutoCloseable⼦类型(Scanner,PrintWriter)资源有close⽅法,使⽤完的资源close以防⽌内存泄漏。

JavaIO流(输入输出操作)

JavaIO流(输入输出操作)

JavaIO流(输⼊输出操作)Java中执⾏输出和输⼊操作,需要通过IO流。

例如最常见的System.out.println()就是⼀个输出流。

IO流的类⽐较多,但核⼼体系就是由File、 InputStream 、OutputStream、Reader、Writer和Serializable(接⼝)组成的,后续会⼀⼀详细说明。

I/O流基础概念按照流的⽅向分为输⼊流(InputStream)与输出流(OuputStream):输⼊流:只能读取数据,不能写⼊数据。

输出流:只能写⼊数据,不能读取数据。

因为程序是运⾏在内存中,以内存⾓度来理解输⼊输出概念,如下:可以看到输⼊与输出是⼀个相对概念,数据写⼊⽂件,对于程序来说是输出流,对⽂件来说是输⼊流。

但⼀般是以程序作为中⼼,所以从程序写⼊数据到其他位置,则是输出流,将数据读⼊程序中则是输⼊流。

简单的说就是:读取数据就是输⼊流,写⼊数据就是输出流。

按照处理的数据单位分为字节流和字符流字节流:操作的数据单元是8位的字节。

InputStream、OutputStream作为抽象基类。

字符流:操作的数据单元是字符。

以Writer、Reader作为抽象基类。

字节流可以处理所有数据⽂件,若处理的是纯⽂本数据,建议使⽤字符流。

IO流中的三类数据源基于磁盘⽂件:FileInputStream、FileOutputSteam、FileReader、FileWriter基于内存:ByteArrayInputStream ByteArrayOutputStream(ps:字节数组都是在内存中产⽣)基于⽹络:SocketInputStream、SocketOutputStream(ps:⽹络通信时传输数据)根据流的作⽤可分为节点流和处理流节点流:程序直接与数据源连接,和实际的输⼊/输出节点连接;处理流:对节点流进⾏包装,扩展原来的功能,由处理流执⾏IO操作。

处理流的作⽤和分类:处理流可以隐藏底层设备上节点流的差异,⽆需关⼼数据源的来源,程序只需要通过处理流执⾏IO操作。

Java输入与输出实验报告

Java输入与输出实验报告

实验报告课程名称: Java语言程序设计姓名:学号:班级:数学与计算机科学学院数学与计算机科学学院实验报告实验名称:输入与输出指导教师:日期:}private static void writeFile() throws Exception{String s;while(true){System.out.println("输入字符串:");System.out.flush();s=keyread.readLine();if(s.length()==0) break;bwrite.write(s);bwrite.newLine();}}public static void main(String args[]) throws Exception{String filename="E:\\project_java\\src\\file";file=new File(filename);if(!file.exists()){System.out.println("文件不存在");return;}fwrite=new FileWriter(file);bwrite=new BufferedWriter(fwrite);keyread=new BufferedReader(new InputStreamReader(System.in));writeFile();keyread.close();bwrite.close();fread=new FileReader(file);bread=new BufferedReader(fread);readFile();bread.close();}}第2题代码:import java.io.*;public class MyFile{public static void main(String args[]) throws IOException {String filename="E:\\project_java\\src\\file";File file=new File(filename);if(!file.exists()){System.out.println("文件不存在");return;}FileReader fread=new FileReader(file);BufferedReader bread=new BufferedReader(fread);String s=bread.readLine();while(s!=null) {System.out.println(s);s=bread.readLine();}fread.close();System.out.println("文件路径:"+file.getAbsolutePath());System.out.println("修改时间:"+stModified());System.out.println("文件长度:"+file.length());System.out.println("文件可读:"+file.canRead());System.out.println("文件可写:"+file.canWrite());}}实验结果第1题:第2题:。

第九章java输入输出流

第九章java输入输出流
System.out.println(" 输入一个字符"); c=(char)System.in.read(); System.out.print( "输入的字符是:"+c); } }
OutputStream类
OutputStream类是所有输出数据流的父类,所以它也被实现成 抽象类,定义了所有输出数据流都具有的共同特性.
close( )关闭RandomAccessFile流,并释放资源。 getFilePointer()返回文件指针位置。 length()返回文件长度 read()从文件中读取一个字节的数据 readInt()从文件中读取一个int值(4个字节) readLine()读取一行 seek(long pos)定位参数pos在文件中指定的位置
OutputStream类的method
public void close( ) throws IOException 关闭与输出数据流的连系 public void flush( )throws IOException 将写入的数据确实送到接受数据的装置去.因为写入的数据通 常会先放到高速缓存(cache)里面,等到数量达到某一程度 时,用这个方法将强迫数据写进去. public void write(byte[ ] b)throws IOException 将数组b中的数据写入输出数据流
Writer类的method
public abstract void close()throws IOException 关闭与输出数据流的连接,但关闭之前会先调用一次flush
method.如果程序结束前没有调用这个method.则写入的数据 可能会流失调. public abstract void flush()throws IOEception 将写入的数据确实送到收据的装置去. public void write(char[] cbuf) 将cbuf数组中的字符一一 写入输出数据流

java_9输入输出流 课件

java_9输入输出流 课件

9.2.1 File类(重点内容)

File类提供独立于平台的文件处理方法。
File类的构造函数:(熟练掌握)
– public File(Sting path) ; – public File(Sting path , String name) ; – public File(File dir , teBoolean()方法,写出数据时用0表示false,用1 表示true; 用readBoolean()读入数据时,如果是0,则返回 false,非0返回true。
字符串写入文件(了解)
三种方法与字符串的写出有关: 1. 2. 3. writeBytes() :每个字符占一个字节。 writeChars() :每个字符占2个字节,即16位。 writeUTF() :以8位编码的方式写出字符串。
结构图(了解)
FileInputStream File InputStream
FilterInputStream
PipeInputStream SequenceInputStream
RandomAccessFile
Object OutputStream Reader Writer FileOutputStream
readLine() 读入一行字符。有四种行结束符:回车符'\r',
新行符'\n',回车符后紧跟新行符,或者文件结束。读入 的一行字符中包含行结束符。
RandomAccessFile常见写入方法

write + 不同的后缀:分别为Byte, Short,Int,Long, Float, Double, Char, Boolean。 对于用这些方法写出的数据,应该用带有相同后缀的读入 方法来读取数据,否则可能出错。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验9Java输入输出流
一. 实验目的
1理解Java数据流的概念。

2了解Java输入输出流的层次结构。

3 了解Java文件的分类(文本文件,二进制文件)。

4 掌握字节流的基本使用方法。

5 掌握字符流的基本使用方法。

6 能够创建、读写、更新文件。

二. 实验内容
1 基本内容(实验前请及时熟悉如下相关内容)
1)FileInputStream类的应用
2)FileOutputStream类的应用
3)FileReader类的应用
4)FileWriter类的应用
5)对象的写入与读取
6)RandomAccessFile类
7)处理I/O异常
2 综合实验:
2.1 完成右图中的程序:用户输入文件名称,然后按下view按钮,在textArea中
把内容显示出来。

The user enters a file name in a text
field and clicks the Viewbutton; the file
is then displayed in a text area.
图 a The program displays the text
from a file in a text area.
2.2 给定一个文件目录,把文件目录中的所有word文档文件(后缀名为doc和docx)的名称存储到一个指定的文本文件中。

2.3 使用BufferedInputStream and BufferedInputStream实现一个文件拷贝的功能,并对可能的异常进行处理。

2.4 使用对象流ObjecctInputStream和ObjectOutputStream,在上次完成的华容道游戏的基础上添加如下的功能,把当前的游戏中的人物保存下来,下次可以载
入上次保存游戏人物状态,来继续前一次的游戏。

(思考:如何完成撤销和恢复的功能)。

相关文档
最新文档