对java中的输入/输出的总结(字节流,字符流)

合集下载

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 I/O原理→基本概念:•I/O(Input/Output)•数据源(Data Source)•数据宿(Data Sink)→Java中把不同的数据源与程序间的数据传输都抽象表述为“流”(Stream),java.io包中定义了多种I/O流类型实现数据I/O功能。

→I/O流分类:•输入流(Input Stream)和输出流(Output Stream)•节点流(Node Stream)和处理流(Processing Stream)•字符流(Character Stream)和字节流(Byte Stream)#输入流(Input Stream)和输出流(Output Stream)1.输入流只能从中读取数据,而不能向其写数据;2.输出流则只能向其写出数据,而不能从中读取数据;3.特例:java.io.RandomAccessFile类。

#节点流(Node Stream)和处理流(Processing Stream)1.节点流直接连接到数据源2.处理流是对一个已存在的流的连接和封装,通过所封装的刘的功能调用实现增强的数据读写功能,处理流并不直接连到数据源#字符流(Character Stream)和字节流(Byte Stream)1.字节流以字节为单位进行数据传输,每次传送一个或多个字节。

2.字符流以字符为单位进行数据传输,每次传送一个或多个字符。

※Java命名惯例:凡是以InputStream 或OutputStream结尾的类型均为字节流,凡是以Reader 或Writer 结尾的均为字符流。

InputStream抽象类java.io.InputStream 是所有字节输入流类型的父类,该类中定义了以字节为单位读取数据的基本方法,并在其子类中进行了分化和实现。

◆三个基本的 read方法: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()OnputStreamJava.io.OutputStream 与java.io.InputStream对应,是所有字节输出流类型的抽象父类。

兄弟连_马剑威_JAVA基础_102_IO之字符流

兄弟连_马剑威_JAVA基础_102_IO之字符流

IO之字符流第102 讲马剑威1、字符输出流2、字符输入流3、字节流与字符流的区别1、字符输出流字符输出流•public abstract class Writer•extends Object•implements Appendable, Closeable, Flushable•写入字符流的抽象类。

子类必须实现的方法仅有write(char[], int, int)、flush() 和close()。

但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他但是多数子类将重写此处定义的些方法以提供更高的效率和功能。

方法名称描述public void write(String str) throws IOException直接将字符串写入输出public void write(String str)throws IOExceptionpublic void write(char[] cbuf) throws IOException输出字符数组public abstract void close() throws IOException关闭p()ppublic abstract void flush() throws IOException刷新字符输出流1、字符输出流•与OutputStream 一样,对文件的操作使用:•FileWriter 类完成,此类的构造方法如下:方法名称描述public FileWriter(File file) throws IOException 根据File 类构造FileWriter 实例Fil Fil W it 实例public FileWriter(File file,boolean append) throws IOException 根据File 类构造FileWriter 实例,可以追加内容2、字符输入流字符输入流•public abstract class Readerextends Objectd Obj•implements Readable, Closeable•用于读取字符流的抽象类。

java面向对象填空题(含答案)

java面向对象填空题(含答案)

一、java面向对象(50个)易:1.对象是由一组属性和对这组属性进行(操作)的一组服务组成的。

2.对象是指(具体)的事物,而类是指一类具有某种共性的事物。

3.由类来确定具体对象的过程称为类的(实例化)。

4.一个类由类声明和(类体)两部分组成。

5.当一个类的类修饰符为( final )时,说明该类不能被继承,即不能有子类。

6.Java程序在extends之后只能有一个父类,即extends只能实现(单)继承。

7.在Java中只能实现单继承,但可通过(接口)实现多重继承。

8.一个类可实现多个接口,各接口名是以(,)分隔。

9.在类体中声明的变量称为(成员)。

10.在方法中声明的变量称为(局部变量)。

11.在Java程序中,使用关键字(this)来引用当前对象。

12.一个方法的定义是由方法声明和(方法体)两部分组成。

13.方法声明包括(方法名)、返回类型和形式参数。

14.构造方法的方法名要求与(类名)相同,而且无返回值。

15.面向对象的三个特性是:封装性、继承性和(多态性)。

16.在Java中,通过对象的(封装),实现了模块化和信息隐藏。

17.两个方法具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同,则称为方法的(重写)。

18.Java中通过关键字(super)来实现对父类成员的访问。

19.Java用( extends)关键字指明继承关系。

20.在Java中,用关键字(abstract)来修饰一个类,则该类为抽象类。

21.若某个类包含了抽象方法,则该类必须被定义为(抽象)类。

22.接口的定义,需使用关键字(interface)来声明。

23.声明父类时,需使用关键字(extends)来实现。

24.java语言中接口是特殊的类,其中包含常量和(抽象)方法。

25.当要引用包中所有的类时,类名可以用通配符(* )号代替。

26.一个类要从另一个类继承变量和方法,必须使用关键字(extends)。

27.(抽象)类不能被实例化,它不具备实际功能,只用于衍生子类。

第八章输入输出处理输入输出处理是...

第八章输入输出处理输入输出处理是...

第八章输入/输出处理输入/输出处理是程序设计中非常重要的一部分,比如从键盘读取数据、从文件中读取数据或向文件中写数据等等,而键盘、监视器、磁盘存储设备都称为输入、输出源。

Java把这些不同类型的输入、输出源抽象为流(stream)。

Java程序可以用输入流从一些输入源读数据,用输出流向一些输出源写数据。

Jdk 提供了包java.io,其中包括一系列的类来实现输入/输出处理。

从jdk1.1开始,java.io包中的流包括字节流和字符流。

§8.1输入/输出字节流概述§8.1.1 I/O字节流的层次结构在java中,所有的输入流都是从抽象类InputStream继承而来,所有的输出流都是从OutputStream 继承而来。

以下给出了java语言IO包中输入/输出处理类之间的继承关系。

输入、输出字节流的类层次一、简单的输入、输出流1.FileInputStream和FileOutputStream:用于本地文件系统的文件读写。

2.PipedInputStream和PipedOutputStream:用于完成管道的输入和输出。

管道用于将一个程序(或线程或代码块)的输出引导进另一个程序(或线程或代码块)的输入,所有PipedInputStream必须连接到一个PipedOutputStream所有PipedOutputStream必须连接到一个PipedInputStream。

3.ByteArrayInputStream和ByteArrayOutputStream:读写内存数据。

4.SequenceInputStream:用于将多个输入流连接到一个输出流。

5.StringBufferInputStream:用于读取StringBuffer类可变字符串中的数据。

二、过滤流1.DataInputStream和DataOutputStream:用一种与机器无关的格式读写java语言的基本数据类型。

java字符流与字节流的区别是什么

java字符流与字节流的区别是什么

java字符流与字节流的区别是什么java中字符流与字节流的区别:1、字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。

2、字节流默认不使⽤缓冲区;字符流使⽤缓冲区。

3、字节流通常⽤于处理⼆进制数据,实际上它可以处理任意类型的数据,但它不⽀持直接写⼊或读取Unicode码元;字符流通常处理⽂本数据,它⽀持写⼊及读取Unicode码元。

字节流Java中的字节流处理的最基本单位为单个字节,它通常⽤来处理⼆进制数据。

Java中最基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输⼊字节流和输出字节流。

InputStream类与OutputStream类均为抽象类,我们在实际使⽤中通常使⽤Java类库中提供的它们的⼀系列⼦类。

下⾯我们以InputStream类为例,来介绍下Java中的字节流。

InputStream类中定义了⼀个基本的⽤于从字节流中读取字节的⽅法read,这个⽅法的定义如下:public abstract int read() throws IOException;这是⼀个抽象⽅法,也就是说任何派⽣⾃InputStream的输⼊字节流类都需要实现这⼀⽅法,这⼀⽅法的功能是从字节流中读取⼀个字节,若到了末尾则返回-1,否则返回读⼊的字节。

关于这个⽅法我们需要注意的是,它会⼀直阻塞知道返回⼀个读取到的字节或是-1。

另外,字节流在默认情况下是不⽀持缓存的,这意味着每调⽤⼀次read⽅法都会请求操作系统来读取⼀个字节,这往往会伴随着⼀次磁盘IO,因此效率会⽐较低。

有的⼩伙伴可能认为InputStream类中read的以字节数组为参数的重载⽅法,能够⼀次读⼊多个字节⽽不⽤频繁的进⾏磁盘IO。

那么究竟是不是这样呢?我们来看⼀下这个⽅法的源码:public int read(byte b[]) throws IOException {return read(b, 0, b.length);}它调⽤了另⼀个版本的read重载⽅法,那我们就接着往下追:public int read(byte b[], int off, int len) throws IOException {if (b == null) {throw new NullPointerException();} else if (off < 0 || len < 0 || len > b.length - off) {throw new IndexOutOfBoundsException();} else if (len == 0) {return 0;}int c = read();if (c == -1) {return -1;}b[off] = (byte)c;int i = 1;try {for (; i < len ; i++) {c = read();if (c == -1) {break;}b[off + i] = (byte)c;}} catch (IOException ee) {}return i;}从以上的代码我们可以看到,实际上read(byte[])⽅法内部也是通过循环调⽤read()⽅法来实现“⼀次”读⼊⼀个字节数组的,因此本质来说这个⽅法也未使⽤内存缓冲区。

04747 java知识点总结

04747 java知识点总结

第七章:输入和输出流第一节:数据流的基本概念1.在java中,把不同类型的输入、输出源抽象为流,其中输入或输出的数据成为数据流,用统一的接口表示。

2.数据流是指一组有顺序的、有起点和终点的字节集合。

程序从键盘接收数据或向文件中写数据,都可以使用数据流来完成。

3.流分为输入数据流和输出数据流。

输入数据流只能读不能写;而输出数据流只能写不能读。

从数据流中读取数据是,必须有一个数据源与该数据流相连(FileInput Stream in = new FileInputStream(“javatest.txt”);)(实例化)4.Java.io包中提供了表示数据流的4个基本抽象类(不可以实例化),分别是InputStream、OutputStream、Reader和Writer。

因此涉及数据流操作的程序中,几乎都要使用引入语句:import java.io.*5.为了使对象的状态能够方便地永久保存下来,java.io包中又提供了以字节流为基础的用于对象的永久化保存状态的机制,通过实现ObjectInput和Object Output接口来完成。

6.输入数据流提供的主要操作方法有:(得到-1,标志数据流结束)int read():从输入流读取一个字节的二进制数据int read( byte [ ] b):将多个字节读到数组中,填满整个数组int read( byte [ ] b ,int off , int len): 从输入流中读取长度为len的数据,从数组b中下标为off的位置开始放置读入的数据,读毕返回读取的字节数。

7.void close(): 关闭数据流int available(): 返回目前可以从数据流中读取的字节数long skip(long l): 跳过数据流中指定数量的字节不读取,返回值表示实际跳过的字节数8.如需要反向读取数据流,则使用回推操作(Push Back)Boolean markSupported(): 用于测试数据流是否支持回推操作void mark(int): 用于标记数据流的当前位置,并划出一个缓冲区,其大小至少为指定参数的大小。

输入输出流-2.输入输出流、文件流

输入输出流-2.输入输出流、文件流
18
4.5
文件输入输出流
FileInputStream 用来打开一个输入文件,可以从文件读取一个或几个字节。 若文件不存在,则会产生例外FileNotFoundException,这是一个 非运行时例外,必须捕获或声明抛弃; FileOutputStream 用来打开一个输出文件,可以将一个或几个字节写入文件。 若文件不存在,则创建一个新的文件,否则原文件被覆盖。 FileReader
4
本节学习目标
熟悉字节文件流和字符文件流 熟悉输入输出流的常用方法 掌握字节文件输入输出流的使用 掌握字符文件输入输出流的使用
5
文件输入输出流
任务1:通讯录以文本形式存储,读取文件内容,并输出显示(在读取 时一次读取一个字节或一个字符) 成果体验
任务步骤: 创建文件输入流对象 读取文件中的个人通讯方式 输出显示 检测运行是否成功 任务2:向通讯录中写入新的联系人及联系方式.
15
字节流抽象类的使用
把输入流中的所有内容复制到输出流中
public void copy(InputStream in, OutputStream out) throws IOException { byte[] buf = new byte[4096]; int len = in.read(buf); while (len != -1) { out.write(buf, 0, len); 一般2个抽象类使用在形参中, 一般2个抽象类使用在形参中, len = in.read(buf); 可以接受任何其子类对象 } }
注意:new File()只是生成文件对象,不是生成真正的文件,生成文 件用creatNewFile(),生成文件目录mkdir()或者mkdirs() 文件是有扩展名,用creatNewFile() 目录无扩展名,用mkdir()或者mkdirs() 。表示当前目录
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1,先是关于字节流
import java.io.*;
public class SimpleIO {
/**
System 类包含一些有用的类字段和方法。

它不能被实例化。

字段摘要
static PrintStream err “标准”错误输出流。

static InputStream in “标准”输入流。

static PrintStream out “标准”输出流。

字段不是一个类,它是一个类的static属性
out是System类的一个属性,而它的类型是PrintStream
PrintStream是一个类,它有个方法是println().
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
char c;
System.out.println("请输入一个字符:");
try
{
c=(char)System.in.read();
System.out.println("你输入的字符是:"+c);
}
catch(IOException e)
{
System.out.println("产生异常");
}
}
}
2,关于字符流的考虑。

import java.io.*;
public class SimpleIOs {
/**
ng.Object
继承者 java.io.Reader
继承者 java.io.InputStreamReader
构造方法摘要
InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。

InputStreamReader(InputStream in, Charset cs)
创建使用给定字符集的 InputStreamReader。

InputStreamReader(InputStream in, CharsetDecoder dec)
创建使用给定字符集解码器的 InputStreamReader。

InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。

ng.Object
继承者 java.io.Reader
继承者 java.io.BufferedReader
构造方法摘要
BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。

BufferedReader(Reader in, int sz)
创建一个使用指定大小输入缓冲区的缓冲字符输入流。

readLine()为BufferedReader扣的方法,
public String readLine()
throws IOException
读取一个文本行。

通过下列字符之一即可认为某行已终止:换行 (' ')、回车 (' ') 或回车后直接跟着换行。

返回:
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
抛出:
IOException - 如果发生 I/O 错误
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。

它使用的字符集可以由名称指定或显式给定,否则可能接受平台默认的字符集。

每次调用 InputStreamReader 中的一个 read() 方法都会导致从基础输入流读取一个或多个字节。

要启用从字节到字符的有效转换,可以提前从基础流读取更多的字节,使其超过满足当前读取操作所需的字节。

为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。

例如:
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="";
System.out.println("请输入一个字符:");//只读取一个字符,按字符(char)读取.
Reader in=new InputStreamReader(System.in);
try
{
System.out.println("你输入的字符串是:"+(char)in.read());
}
catch(IOException e)
{
System.out.println("出现一个异常");
}
System.out.println("请输入一串字符:");//读取一串字符,按字符串(String)读取
BufferedReader newin = new BufferedReader(new InputStreamReader (System.in));
try
{
s=newin.readLine();
System.out.println("你输入的字符串为:"+s);
}
catch(IOException e)
{
System.out.println("发生异常!");
}
} }。

相关文档
最新文档