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第9章 输入输出课件

9.2.5 小文件的读写
• Files类提供了从一个较小的二进制文件和文 本文件读取和写入的方法。readAllBytes() 方法和readAllLines()方法分别是从二进制 文件和文本文件读取。这些方法可以自动打 开和关闭流,但不能处理大文件。
9.2.5 小文件的读写
• public static byte[] readAllBytes(Path path):从指定的二进制文件中读取所有字 节。
9.2 Files类操作
• java.nio.类是一个功能非常强大的类。 • 该类定义了大量的静态方法用来读、写和
操纵文件和目录。Files类主要操作Path对 象。
9.2.1 创建和删除目录和文件
• public static Path createDirectory(Path dir, <?>…attrs)
= ();
1. 类
• Path getPath(String first, String …more) • String getSeparator() • Iterable<Path> getRootDirectores() • boolean isOpen() • boolean isReadOnly()
• static Path setOwner(Path path, UserPrincipal) :设置指定文件的所有者。
9.2.2 文件属性操作
• 下面程序演示了Files类几个方法的使用。 • 程序9.1
R u n
9.2.3 文件和目录的复制与移动
• 使用Files类的copy()方法可以复制文件和 目录,使用move()方法可以移动目录和文 件。copy()方法的一般格式为: public static Path copy( Path source, Path target, CopyOption…options)
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”的个数,并显示统计的时间。
第7章 Java的输入 输出流

第7章 Java的输入/输出流
String dirList[]=f1.list(m); for(int i=0;i<dirList.length;i++) Transcript.println(dirList[i]); } } public MyClass3(File f) { this.f=f; } public boolean accept(File dir, String name){ return name.startsWith("un"); } }
第7章 Java的输入/输出流
该程序的运行结果如图7.3所示。 此程序中,我们为了说明路径分隔符的使用方法, 实例化文件对象的时候给出了全路径,其实由于我们 已经在Java系统中设置好了源路径,只要给出文件名 就行了。 表7.1中,list方法用于列出一个目录中所有的文件 或与某个模式相匹配的文件。下面我们给出两个例子 来讨论带参数或不带参数的list方法的使用。
返回指定格式的目录中的文件名 返回当前目录中的所有文件名 创建目录,成功返回真 创建路径中所有目录,成功则返回真 返回路径分隔符 文件更名,成功返回真 返回文件分隔符 返回对象的字符串表示
第7章 Java的输入/输出流
下面我们给出几个File类的应用实例。通过例题的 使用,希望读者对File类有更清楚的认识。 例7.1 import java.io.*; public class MyClass1 { public static void main(String args[]){ Filef=new File("c:\\jbuilder3\\myprojects\\untitled5\\MyClass1.java"); if(!f.exists())
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输入输出流

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(); } }
java08(第8章输入输出流)

在java.io包中定义了很多这二个基本类具体实现 包中定义了很多这二个基本类具体实现 输入输出功能的子类, 输入输出功能的子类,表8.1为部分常用字节输入 为部分常用字节输入 流类和字节输出流子类的功能。 流类和字节输出流子类的功能。
表8.1
类 名 FileInputStream 和 FileOutputStream ByteArrayInputStream和 ByteArrayOutputStream ObjectInputStream 和 ObjectOutputStream FilterInputStream 和 FilterOutputStream DataInputStream 和 DataOutputStream BufferedInputStream 和 BufferedOutputStream
【例8-1 】
1. /* 读取文件 */ 2. import java.io.FileInputStream; 3. import javax.swing.JOptionPane; 4. class Example8_1 5. { public static void main( String args[ ]) 6. { byte buffer[ ] = new byte[2056]; 7. String str; 8. try{ 9. File file=new File("d:/jtest/test.dat"); 10. FileInputStream fileInput = new FileInputStream(file); 11. int bytes = fileInput.read( buffer, 0, 2056 ); //读到的字节数 读到的字节数 12. str = new String( buffer, 0, bytes ); 13. } 14. catch(Exception e) 15. { 16. str= e.toString(); 17. } 18. JOptionPane.showMessageDialog(null,str); 19. System.exit(0); //退出程序 退出程序 20. } 21. }
java中基本输入输出流的解释

java中基本输入输出流的解释1.网络程序的很大一部分是简单的输入输出,即从一个系统向另一个系统移动字节。
字节就是字节,在很大程度上,读服务器发送的数据与读取文件没什么不同;向客户传送数据与写入一个文件也没有什么区别。
Java中输入和输出组织不同于大多数其他语言。
它是建立在流(stream)上。
不同的基本流类(如java.io.FileInputStream和.TelnetOutputStream)用于读写特定的数据资源。
但是所有的基本输出流使用同一种基本方法读数据。
过滤器流可以连接到输入流或输出流。
它可以修改已经读出或写人的数据(例如,加密或压缩数据),或者可以简单地提供附加方法将已经读出或写入的数据转化成其他格式。
最后Reader和Writer也可以链接到输入流和输出流,从而允许程序读出和写入文本(即字符)而不是字节。
如果使用正确,Reader和Writer能够处理多种类型的字符编码,包括SJIS和UTF-8等多字节字符集。
一、输出流java的基本输出流是 java.io.OutputStream.public abstract class OutputStreamn public abstract void write(int b) throws IOExceptionn public void write(byte[] data) throws IOExceptionn public void write(byte[] data,int offset,int length) throws IOExceptionn public void flush() throws IOExceptionn public void close() throws IOExceptionOutputStream的子类使用这些方法向指定媒体写入数据。
我始终相信,我们理解了为什么它们存在,就会更好地记住它们,好,现在开始说一下OutputStream类的方法的由来public abstract void write(int b) throws IOExceptionOutputStream的基本方法是write(int b)。
java标准输入输出常用方法

java标准输入输出常用方法Java标准输入输出是Java编程语言中常用的输入输出方式,它们提供了方便快捷的数据传输功能。
在Java中,标准输入输出包括标准输入流(stdin)、标准输出流(stdout)和标准错误输出流(stderr)。
这些流对象都是java.io包中的抽象类,它们提供了许多常用的方法来实现数据的输入输出操作。
一、标准输入流(stdin)标准输入流是一个常用的输入流对象,通常用于从控制台读取用户输入的数据。
Java提供了许多常用的方法来实现对标准输入流的读取操作。
以下是一些常用的方法:1.read()方法:用于从标准输入流中读取一个字节数据,并返回该数据的字节值。
如果读取成功,返回值为1;如果读取失败或到达文件末尾,返回值为-1。
示例代码:```javaintdata=stdin.read();```2.readLine()方法:用于从标准输入流中读取一行数据,并返回该行的字符串值。
该方法会一直读取直到遇到换行符或到达文件末尾。
示例代码:```javaStringline=stdin.readLine();```3.readInt()方法:用于从标准输入流中读取一个整数数据,并返回该数据的整数值。
该方法会读取一个整数数据,并将其存储在一个int类型的变量中。
示例代码:```javaintnum=stdin.readInt();```需要注意的是,在使用标准输入流时,需要注意控制台的缓冲区大小和读取速度,以免造成数据丢失或程序崩溃。
二、标准输出流(stdout)标准输出流是一个常用的输出流对象,通常用于将数据输出到控制台或文件。
Java提供了许多常用的方法来实现对标准输出流的输出操作。
以下是一些常用的方法:1.write()方法:用于将一个字节数据写入到标准输出流中。
该方法需要一个byte类型的参数,表示要写入的字节数据。
示例代码:```javastdout.write(data);```2.print()方法:用于将一个对象写入到标准输出流中,并自动将其转换为字符串形式进行输出。
Java输入输出流(一)——常用的输入输出流

Java输⼊输出流(⼀)——常⽤的输⼊输出流1.流的概念:在Java中,流是从源到⽬的地的字节的有序序列。
Java中有两种基本的流——输⼊流(InputStream)和输出流(OutputStream)。
根据流相对于程序的另⼀个端点的不同,分为节点流和过滤流。
(1)节点流:以特定源如磁盘⽂件、内存某区域或者线程之间的管道为端点的构造输⼊输出流,是⼀种基本的流。
(2)过滤流:以其他已经存在的流为端点构造的输⼊输出流。
根据流中的数据单位分为字节流和字符流。
(1)字节流:流中的数据是以8位字节为单位进⾏读写,以InputStream和OutputStream为基础类。
(2)字符流:流中的数据是以16为字符为单位进⾏读写,以Reader和Writer为基础类。
2.字节流InputStream和OutputStream是字节流的两个顶层⽗类,提供了输⼊流类和输出流类的通⽤API。
2.1 输⼊字节流InputStream基本⽅法:(1)基本读⽅法;: int read() int read(byte[] b) int read(byte[] b,int off,int len)(2) 关闭流:void close()(3) 返回输⼊流中还有多少可读字节 int available()(4) 跳过指定字节 long skip(long n)(5) 回读数据 boolean markSupported() void Mark(int readlimt) void reset()2.2 输出字符流OutputStream基本⽅法:(1)基本写⽅法:void write(int c) void write(byte[] b) void write(byte[] b,int off,int len)(2) 关闭流:void close()(3)q强制输出:void flush()3.字符流:Reader和Writer是字符流的顶层⽗类,字符流能够处理Unicode字符集中的所有字符。
第9章:输入和输出流

9.1.2 流对象
1. 建立流对象
创建输入输出流对象的常用构造方法用2种,如:
FileInputStream (String name), 直接指定的文件名创建输入流 FileInputStream (File filename), 用文件对象创建输入流。
创建FileOutputStream类、FileReader类和FileWriter类的 流对象与FileInputStream完全类似。
(1) File (String s),由 s 确定 File 对象的文件名。
(2) File (String directory , String s) s确定文件名。
9.1.2 流对象
Java 程序的输入和输出流称为流对象, 输入输出流由文件名 或 File 对象创建。
使用以上三个方法时,如果在读数据之前,已到达输入的末端位置,没有 读入一个字节数据,用返回-1 表示流在读之前已结束。
9.1.2 流对象
2. 输入流的常用方法
FileReader类包含下面用于读字符和字符数组的方法:
(1)int read(), 从输入流读取下一个字符。 返回的整数即该字符的 Unicode值。如果读前已到流的末尾,则返回-1。 (2)int read (char b[]), 从输入流读取长度为 b.length 的字符数据,写入 到字符数组 b,并返回实际所读取的字符数。 (3)int read (char b[], int off, int len),从数据流中读取长度为 len 的字 符数据,写入到字符数组 b 中从下标 off 开始的数组元素中,并返回实际读 取的字符数。
BufferedWriter 类是提供缓冲式输出的类。
java inputstream 和 outputstream使用方法

java inputstream 和 outputstream使用方法Java中的InputStream和OutputStream是用于处理字节流的抽象类。
它们是Java IO库中非常重要的部分,用于读取和写入数据。
InputStream的使用方法:1. 创建一个InputStream对象,可以通过继承InputStream类或实现InputStream接口来创建子类或实现类。
2. 使用read()方法读取数据,该方法会返回一个字节数组。
可以多次调用read()方法来读取多个字节,直到所有数据都被读取完毕。
3. 使用close()方法关闭InputStream对象,释放相关资源。
下面是一个简单的示例代码,演示如何使用InputStream读取文件中的数据:```javaimport ;import ;public class InputStreamExample {public static void main(String[] args) {try {FileInputStream fis = new FileInputStream(""); byte[] buffer = new byte[1024];int bytesRead = (buffer);while (bytesRead != -1) {// 处理读取到的数据(new String(buffer, 0, bytesRead));bytesRead = (buffer);}();} catch (IOException e) {();}}}```OutputStream的使用方法:1. 创建一个OutputStream对象,可以通过继承OutputStream类或实现OutputStream接口来创建子类或实现类。
2. 使用write()方法写入数据,该方法需要一个字节数组作为参数。
可以多次调用write()方法来写入多个字节,直到所有数据都被写入完毕。
Java程序设计实用教程_第10章_输入、输出流资料

2. Writer流以字符为单位顺序地写文件,每次调用write方法 就顺序地向目的地写入内容。 Writer类有如下常用的方法。
2019/4/7 6
例10-1 例10-1
Example10_1.java
page 177
2019/4/7
7
§10.1.2 目录
1.创建目录 public boolean mkdir() 2.列出目录中的文件
public String[] list() 用字符串形式返回目录下的全部文件。 ◆ public File [] listFiles() 用File对象形式返回目录下的全部文件。 ◆ public String[] list(FilenameFilter obj) 用字符串形式返回目录 下的指定类型的所有文件。 ◆ public File [] listFiles(FilenameFilter obj) 用File对象形式返回 目录下的指定类型所有文件。 上述两方法的参数 FilenameFilter是一个接口, 该接口有一个
◆
方法:
public boolean accept(File dir,String name);
例10-2
Example10_2.java , FileAccept.java
2019/4/7
8
§10.1.3 文件的创建与删除 当使用File类创建一个文件对象后,例如
File file=new File("c:\\myletter","letter.txt"); ◆ 如果 c:\myletter 目录中没有名字为 letter.txt 文件 , 文件对 象file调用方法 public boolean createNewFile();可以在 c:\myletter目录中建立一个名字为letter.txt的
java 标准输入输出流 print 和println输出的区别

java 标准输入输出流print 和println输出的区别
标准输入输出流
1、System类中的静态对象in,标准输入流in
在程序开始之后它会自动开启,对应至键盘或其他的输入来源
2、System.out:标准的输出对象,System类中的静态对象out,标准输出流out
(1)、提供标注输出流(Stream)输出
标准的输出对象的作用:支持定向输出
(2)、通常对应至显示输出(终端机输出)
(3)、可以将输出重新导向至一个文件
如:在当前文件夹下创建一个out.txt文档。
javademo>out.txt 意思是将demo中的结果输出到out.txt中。
javademo>>out.txt 意思是将demo中的结果追加定向输出到out.txt中。
(及保留之前的输出信息
3、System.err:标准的错误输出对象
注:(1)、System.err不支持定向输出
(2)、标准错误输出流err,直接输出到屏幕,让用户马上知道错误
在java中print 和println输出的区别
打印效果
注意:
print()//System.out.print();
print()//System..out.println();如果没有值,就相当于换行原文地址:/showtopic-2241.aspx。
(JAVA)从零开始之--对象输入输出流ObjectInputStream、ObjectO。。。

(JAVA)从零开始之--对象输⼊输出流ObjectInputStream、ObjectO。
对象的输⼊输出流 : 主要的作⽤是⽤于写⼊对象信息与读取对象信息。
对象信息⼀旦写到⽂件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输⼊流: ObjectInputStream使⽤:对象的输出流将指定的对象写⼊到⽂件的过程,就是将对象序列化的过程,对象的输⼊流将指定序列化好的⽂件读出来的过程,就是对象反序列化的过程。
既然对象的输出流将对象写⼊到⽂件中称之为对象的序列化,那么可想⽽知对象所对应的class必须要实现Serializable接⼝。
(查看源码可得知:Serializable接⼝没有任何的⽅法,只是作为⼀个标识接⼝存在)。
1、将User类的对象序列化1class User implements Serializable{//必须实现Serializable接⼝2 String uid;3 String pwd;4public User(String _uid,String _pwd){5this.uid = _uid;6this.pwd = _pwd;7 }8 @Override9public String toString() {10return "账号:"+this.uid+" 密码:"+this.pwd;11 }12 }1314public class Demo1 {1516public static void main(String[] args) throws IOException {17//假设将对象信息写⼊到obj.txt⽂件中,事先已经在硬盘中建⽴了⼀个obj.txt⽂件18 File f = new File("F:\\obj.txt");19 writeObjec(f);20 System.out.println("OK");21 }2223//定义⽅法把对象的信息写到硬盘上------>对象的序列化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二进制格式操作的I/O流的层次 二进制格式操作的I/O流的层次 I/O
文本字符格式操作的I/O流的层次 文本字符格式操作的I/O流的层次 I/O
I/O流的层次 I/O流的层次
随机文件操作
RandomAccessFile InputStream
二进制格 式操作
Reader
Object
文本格式 操作
标准输出流
System.out它是打印输出流 它是打印输出流PrintStream类的对象,具有 类的对象, 它是打印输出流 类的对象 向屏幕输出不同类型数据的方法println()与print()。 向屏幕输出不同类型数据的方法 与 。 注意: 注意: println() 和 print() 可 以 输 出 多 种 不 同 类 型 的 数 据 ( 如 : boolean , double , float , int , long 类 型 的 变 量 以 及 Object类的对象); 类的对象) 类的对象 当输出类型为对象时, 它将自动调用对象的toString()方 当输出类型为对象时 , 它将自动调用对象的 方 因此在对象所在的类中可以重写toString()方法以输 法 , 因此在对象所在的类中可以重写 方法以输 出特定的内容。 出特定的内容。
import java.io.*; public class FileStreamTest1{ public static void main(String args[]){ try{ File inFile=new File("file1.txt"); File outFile=new File("file2.txt"); FileReader fis=new FileReader(inFile); FileWriter fos=new FileWriter(outFile); int c; while( (c=fis.read())!=-1 ) { fos.write(c); } fis.close(); fos.close(); } catch(FileNotFoundException e) { System.out.println("FileStreamsTest: "+e); } catch(IOException e) { System.err.println("FileStreamsTest: "+e); } } }
文件流
文件流的建立 FileInputStream in=new FileInputStream(fp); FileOutputStream out=new FileOutputStream(fp); 举例:文件拷贝 文件拷贝 输入流的参数是用于输入的文件名 输出流的参数是用于输出的文件名 file1.txt
标准输出流
public class MyClass { public String toString() { return "MyClass String"; } public static void main(String args[]) { MyClass obj=new MyClass(); System.out.println(obj); //输出 输出“MyClass String”字符串 //输出 字符串 } }
文件流
文件输入流FileInputStream 文件输入流 文件输出流FileOutputStream 文件输出流 对文件操作要定义文件流 FileInputStream类用来操作一个输入文件 类用来操作 类用来操作一个输入文件 Байду номын сангаасileOutputStream类用来操作一个输出文件 类用来操作 类用来操作一个输出文件
文件流
FileReader和FileWriter是字符流,用于字符文件的输入输出 和 是字符流, 是字符流 用法: 用法:FileReader fr=new FileReader(“file1.txt"); FileWriter fw=new FileWriter(“file2.txt"); 修改前面文件拷贝的例子: 修改前面文件拷贝的例子 替换FileInputStream 用FileReader替换 替换 替换FileOutputStream 用FileWriter替换 替换 其他的不用改变。 其他的不用改变。
流的分类
根据处理数据的类型,输入输出流可分为两类: 根据处理数据的类型,输入输出流可分为两类: 字节流:传送数据以字节为单位( 位),用来处理 字节流:传送数据以字节为单位(8位),用来处理 字节、整数和其他简单的数据类型。 字节、整数和其他简单的数据类型。 字符流:传送数据以字符为单位(16位),用来处理 字符流:传送数据以字符为单位( 位),用来处理 文本文件和其他文本数据源。 文本文件和其他文本数据源。 因此, 包中有两大继承体系, 因此,java.io包中有两大继承体系,字节流类的父类 包中有两大继承体系 是InputStream和OutputStream,字符流类的父类是 和 , Reader和Writer。 和 。
输入流 输出流
file2.txt
import java.io.*; public class FileStreamTest{ public static void main(String args[]){ try{ File inFile=new File("file1.txt"); File outFile=new File("file2.txt"); FileInputStream fis=new FileInputStream(inFile); FileOutputStream fos=new FileOutputStream(outFile); int c; while( (c=fis.read())!=-1 ) { fos.write(c); } fis.close(); fos.close(); } catch(FileNotFoundException e) { System.out.println("FileStreamsTest: "+e); } catch(IOException e) { System.err.println("FileStreamsTest: "+e); } } }
文件类(File) 文件类
java.io包中提供了 包中提供了File类,它是负责管理文件和目录的, 它是负责管理文件和目录的, 包中提供了 类 它是负责管理文件和目录的 而不是负责读写文件 每个File类的对象对应于文件系统中的一个目录或文 类的对象对应于文件系统中的一个目录或文 每个 件 File类的构造方法:File(String pathname) 类的构造方法: 类的构造方法 File f=new File(“c:\\data\\temp.txt”); File f=new File(“data\\ temp.txt”); File f=new File(“temp.txt”);
OutputStream类 类
write(int b): 将一个整数输出到流中 write(byte b[]): 将数组中的数据输出到流中 write(byte b[], int off,int len): 将数组 中从 指定的位 将数组b中从 中从off指定的位 置开始len长度的数据输出到流中 置开始 长度的数据输出到流中 flush(): 将缓冲区中的数据强制送出 close(): 关闭流
write
输出文件
输入文件
read
文件流
FileInputStream:如果操作的输入文件不存在,则会产 如果操作的输入文件不存在, 如果操作的输入文件不存在 生异常FileNotFoundException,这是一个非运行时异 生异常 这是一个非运行时异 必须捕获或声明抛出; 常,必须捕获或声明抛出; FileOutputStream:如果操作的输出文件不存在,则创 如果操作的输出文件不存在, 如果操作的输出文件不存在 建一个新的文件,如果存在,则覆盖存在的原文件。 建一个新的文件,如果存在,则覆盖存在的原文件。 在进行文件的读/写操作时, 在进行文件的读 写操作时,会产生非运行时异常 写操作时 IOException,必须捕获或声明抛出(其它的输入 输出 必须捕获或声明抛出( 必须捕获或声明抛出 其它的输入/输出 流也同样需要进行输入/输出异常处理 输出异常处理)。 流也同样需要进行输入 输出异常处理)。
System.out
把输出送到缺省的显示(通常是显示器) 把输出送到缺省的显示(通常是显示器)
标准输入流
System.in是InputStream类的对象,当程序中需要从键 是 类的对象, 类的对象 盘读入数据时候,只需要调用 中的read()方法。 方法。 盘读入数据时候,只需要调用System.in中的 中的 方法 char ch=(char)System.in.read(); 注意: 注意: 必须处理System.in.read()所抛出的异常, 用 try/catch 捕 所抛出的异常, try/catch捕 必须处理 所抛出的异常 获或者用throws抛出; throws抛出 获或者用throws抛出; 执行System.in.read()方法将从键盘缓冲区读入一个字节 方法将从键盘缓冲区读入一个字节 执行 的数据; 的数据; 使用System.in.read()来实现键盘输入时, 如果键盘缓冲 来实现键盘输入时, 使用 来实现键盘输入时 区中没有数据时,系统将进入阻塞状态, 区中没有数据时 , 系统将进入阻塞状态 , 等待用户输入 后再继续执行。 后再继续执行。
流的概念
以程序为中心,当程序需要读取数据时使用输入流, 以程序为中心,当程序需要读取数据时使用输入流, 当程序要写出数据时使用输出流。 当程序要写出数据时使用输出流。