第10章Java语言的输入输出流
Java的输入与输出流(实验报告)

成都大学实验报告实验项目名称Java的输入与输出流一、实验目的:1. 理解I/O流的概念,掌握其分类2. 掌握文本文件读写、二进制文件读写二、实验内容(包括源程序及相关说明):1. 分别使用FileWriter 和BufferedWriter 往文件中写入10万个随机数,比较用时。
源代码如下:(1)import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{long t=System.currentTimeMillis();FileWriter fw =new FileWriter("d:\\Ex1.txt");for(int i=1;i<=100000;i++){fw.write((int)(Math.random()*10000)+" \n");}fw.close();t=System.currentTimeMillis()-t;System.out.println("The elapsed: "+t);}}(2)import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{long t=System.currentTimeMillis();BufferedWriter fw=new BufferedWriter(new FileWriter("d:\\Ex1.txt"));for(int i=1;i<=100000;i++){fw.write((int)(Math.random()*10000)+"\n");}fw.close();t=System.currentTimeMillis()-t;System.out.println("The elapsed: "+t);}}2. 生成一个html文件,使其能显示2的幂次(0~9)的表格如下:代码如下:import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\Ex2.html"));bw.write("<table border=1 align=center width=200 height=250>");bw.newLine();bw.write("<tr><td align=center>Power of 2<td align=center>Value</tr>");for(int i=0;i<=9;i++){bw.write("<tr><td align=center>"+i+"<td align=center>"+Math.pow(i, 2)+"</tr>");}bw.write("</table>");bw.newLine();bw.close();}}3. 在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。
java 输入输出流实验

}
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流就会依次读取文件中其余的内容,直到文件的末尾或流被关闭。
java中的输入输出语句

在Java中,你可以使用System.out来进行标准输出,使用System.in来进行标准输入。
以下是一些基本的输入输出语句示例:1. 标准输出(System.out):public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}}上述示例中,System.out.println用于将文本输出到控制台。
2. 标准输入(System.in):import java.util.Scanner;public class UserInput {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("Enter your name: ");String name = scanner.nextLine();System.out.print("Enter your age: ");int age = scanner.nextInt();System.out.println("Hello, " + name + "! You are " + age + " years old.");}}上述示例中,Scanner类用于从控制台读取用户的输入。
scanner.nextLine()用于读取一行文本,而scanner.nextInt()用于读取整数。
3. 格式化输出(System.out.printf):public class FormatOutput {public static void main(String[] args) {String name = "John";int age = 25;System.out.printf("Hello, %s! You are %d years old.%n", name, age);}}上述示例中,System.out.printf允许你使用格式字符串输出,并在其中插入变量的值。
《java输入输出》课件

通过格式化字符串将数据输出到控制台。
String.format
将数据格式化字符串并返回格式化结果。
异常处理
1
try -catch语句
通过添加try-catch语句来处理异常。
2
fin ally 语句
无论是否发生异常,finally语句块中的代码都会执行。
3
自定义异常
开发自定义异常来处理特殊情况。
字符输入输出
字符读取
使用Reader类读取字符信息。
字符写入
使用Writer类向文件中写入字符信息,可支持中文。
二进制输入输出
1 输入
使用BufferedInputStream类从二进制文件中读取信息。
2 输出
使用BufferedOutputStream类将信息写入二进制文件中。
格式化输入输出
控制台输出
使用System.out.print来在控制台输出信息。
键盘输入
使用Scanner类从键盘获取用户输入的信息。
文件输入输出
1
文件读取
使用File类和Scanner类从文件中读取信息。
2
文件写入
使用FileWriter类和PrintWriter类信息写入文件中。
3
二进制文件读写
使用InputStream和OutputStream类读写二进制文件。
《java输入输出》PPT课件
本课程将教您如何处理各种输入输出并展示Java编程语言的强大功能。
输入输出概述
输入
从外部读取数据到计算机中,例如键盘输入。
处理
综合输入和输出,对外部数据做出处理。
输出
将数据从计算机输出到外部,例如屏幕输出。
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日星期日
Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。

Java⾃学第10期——File类与IO流(输⼊输出流、处理流、转换流、缓冲流、Prope。
1、IO简介IO(输⼊输出)通过java.io包下的类和接⼝来⽀持,包下包括输⼊、输出两种IO流,每种输⼊输出流⼜可分为字符流和字节流两⼤类。
2、File类File类是io包下与平台⽆关的⽂件和⽬录,File能新建、删除、重命名⽂件和⽬录,不能访问⽂件本⾝,后者需要使⽤输⼊输⼊流。
2.1 构造⽅法File类的构造⽅法:File(File parent, String child) 参数:⽗路径,⼦路径根据 parent 抽象路径名和 child 路径名字符串创建⼀个新 File 实例。
File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建⼀个新 File 实例。
File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建⼀个新 File 实例。
File(URI uri)通过将给定的 file: URI 转换为⼀个抽象路径名来创建⼀个新的 File 实例。
2.2 静态⽅法File类静态⽅法:static String pathSeparator()与系统有关的路径分隔符,为了⽅便,它被表⽰为⼀个字符串。
static char pathSeparatorChar()与系统有关的路径分隔符。
static String separator()与系统有关的默认名称分隔符,为了⽅便,它被表⽰为⼀个字符串。
static char separatorChar()与系统有关的默认名称分隔符。
2.3 常⽤⽅法:2.3.1 获取相关public String getAbsolutePath()返回此File的绝对路径名字符串。
public String getPath()将此File转换为路径名字符串。
public String getName()返回由此File表⽰的⽂件或⽬录的名称。
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 标准输入流。
Java程序员认证考试题

●第一章Java入门●第二章数据类型和运算符●第三章流程控制与数组●第四章封装●第五章继承●第六章抽象类与接口●第七章多态●第八章异常●第九章多线程机制●第十章输入输出流●第十一章使用泛型和集合框架●第十二章基于Swing的图形用户界面(GUI)设计●第十三章Java事件驱动编程第一章练习题(Java入门)1.下列哪项不是JDK所包含的内容?(选一项)A.Java编程语言B.工具及工具的APIC.Java EE扩展APID.Java平台虚拟机2.下列关于JDK、JRE和JVM的描述。
哪项正确?A.JDK中包含了JRE,JVM中包含了JREB.JRE中包含了JDK,JDK中包含了JVMC.JRE中包含了JDK,JVM中包含了JRED.JDK中包含了JRE,JRE中包含了JVM3.下列哪个工具可以编译java源文件?A.javacB.jdbC.javadocD.junit4.JDK工具javadoc的作用是哪项?A.生成Java文档B.编译Java源文件C.执行Java类文件D.测试Java代码5.以下哪些包是Java标准库中常用的包?(选三项)A.java.langB.javax.servlet .httpC.j ava. ioD.java.sql6.使用JDK工具生成的Java文档的文件格式是?A.XML格式B.自定义格式c.二进制格式D.HTML格式7.以下关于JVM的叙述,哪项正确?(选两项)A.JVM运行于操作系统之上,它依赖于操作系统B.JVM运行于操作系统之上,它与操作系统无关C.JVM支持Java程序运行,它能够直接运行Java字节码文件D.JVM支持Java程序运行,它能够直接运行Java源代码文件8.以下关于支持Java运行平台的叙述,哪项错误?A.Java可在Solaris平台上运行B.Java可在Windows平台上运行C.Java语言与平台无关。
Java程序的运行结果依赖于操作系统D.Java语言与平台无关。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
读取器(Reader)和写出器(Writer)是所有字符流的 超类,它们是直接继承Object类的抽象类。用来 处理纯文本文件。Reader和Writer可读写16位的 字符流。作为抽象类,Reader和Writer必须被子 类化才能实现字符流的读写工作。
10.2使用InputStream和OutputStream
InputStream的方法: public int read() throws IOException
从输入流读取下一个字节,字节值为0-255,如果输入流中 不再有数据,返回-1表示输入结束。这是一个阻塞方法,直 到有数据可读,或数据流结束,或发生异常时才返回。这是 一个抽象方法,需要在具体的子类中加以实现。 从输入流读取一组数据存入缓冲区b中。返回读取字节个数, 如果达到数据流结束返回-1。
调用第一个构建器时,如果name指定的文件 不存在,将创建该文件,并同时建立一个输出 流;如果name指定的文件已存在,该文件的 内容将会被覆盖。在第二个构建器中,我们可 以通过第二个参数append指定是否对已存在 的文件进行覆盖,如果append为true,将对文 件进行追加写,即新输出的内容将添加到文件 尾端,如果append为false,则覆盖原文件。
实例
读取文件(文件字节输入流,目的:使用 FileInputStream类) 用FileInputStream的对象把文件读入到内存。
import java.io.*; public class test23 {
public static void main(String[] args) { FileInputStream fin=null; try { fin=new FileInputStream("d:\\a.txt"); int n=0; //while((n=fin.read())!=-1) // System.out.print((char)n); byte[] b=new byte[12]; while((n=fin.read(b))!=-1) { String s=new String(b,0,n); System.out.println(s); } } catch(IOException e) { System.out.println(e.getMessage()); } finally { try { if(fin!=null) fin.close(); } catch(IOException e) { System.out.println(e.getMessage()); } } }
和FileInputStream对应的文件输出流 FileOutputStream实现了文件输出功能,它的 构建器如下:
public FileOutputStream(String name) throws FileNotFoundException public FileOutputStream(String name, boolean append)throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException public FileOutputStream(FileDescriptor fdObj) throws FileNotFoundException
public int available() throws IOException
返回输入流中mark(int readlimit) throws IOException
在输入流中标记当前位置,以后可调用reset方法返回该位 置,这样可以重复读取标记以后的数据。 重置流的读取位置,回到上次调用mark方法标记的位置。
}
}
}
mport java.io.*; public class FileOUt { public static void main(String[] args)throws IOException { FileOutputStream fout=new FileOutputStream("d:\\123.txt",true); String s1="hello java"; String s2="你好!"; fout.write(s1.getBytes()); fout.write(s2.getBytes()); fout.close();
传输方向:输入流与输出流 内容上:字符流和字节流
流用来顺序地读写数据信息,它是一个单向的 数据通道。 输入流从某个外部的数据源向程序输入数据 输出流从程序向外部数据目标输出数据
输出流 OutputStream(字节流) Writer(字符流)
内存 输入流 InputStream(字节流) Reader(字符流)
public void write(byte[] b) throws IOException
public void write(byte[] b, int off, int len) throws IOException
public void flush() throws IOException
public int read(byte[] b) throws IOException
public int read(byte[] b, int off, int len) throws IOException
从输入流读取最多len字节数据存入缓冲区b中,第一个字节 存储在b[off],随后的按序摆放。返回读取字节个数,如果 至数据流结束返回-1。
public void close() throws IOException
文件输入输出流
文件读写是最常见的I/O操作,通过文件流来 连接磁盘文件,读写文件内容是一件很轻松的 工作。文件输入流(FileInputStream)和文件 输出流(FileOutputStream)是抽象类 InputStream和OutputStream的具体子类, 实现了文件的读写。 文件的读写工作包括3个步骤:
}
}
二进制图形文件的复制
import java.io.*; public class app10_2 {
public static void main(String[] args) { FileInputStream fin=null; FileOutputStream fout=null; try { fin=new FileInputStream("d:\\a1.jpg"); fout=new FileOutputStream("d:\\a2.jpg"); System.out.println("文件的大小="+fin.available()); byte[] b=new byte[fin.available()]; fin.read(b); fout.write(b); System.out.println("文件已被复制并更名"); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } finally{ try{ if(fin!=null) fin.close(); if(fout!=null) fout.close(); } catch(IOException e) { e.printStackTrace(); }
从输入流中忽略n个字节的数据,返回值为实际忽略的字节 个数。
public void reset() throws IOException
public long skip(long n) throws IOException
public void close() throws IOException 关闭输入流,释放占用的系统资源。
文件
10.2 输入输出流类库
Java语言的流类都封装在java.io包中。
字节流每次读写8位(一个字节)的二进制数, 一般为二进制文件。 字符流每次读写16位二进制数,并将其作为一 个字符而不是二进制为来处理。可以表示任何 的文本信息。
处理字节流:InputStream和OutputStream
流中方法都声明抛出异常,在程序中调用流方法时必须处理异常, 否则编译不能通过
在OutputStrem中定义了5个方法:
public abstract void write(int b) throws IOException
向输出流写入一个字节。写出字节为整数b的低字节,整数b 的3个高字节被忽略。这是一个抽象方法,需要在具体的子 类中加以实现。 把缓冲区b中的全部数据写入输出流。 把缓冲区b中从b[off]开始的len个字节的数据写入输出流。 刷新输出流,强制输出缓冲区的数据立即写出。 关闭输出流。
}
import java.io.*; public class FileInputS2 { public static void main(String[] args)throws IOException { FileInputStream fin=new FileInputStream("d://c.txt"); byte[] b=new byte[fin.available()]; int n=fin.read(b); String s=new String(b,0,n); System.out.print(s); fin.close(); } }