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

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("发生异常!");
}
} }。

合集下载

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知识点总结

第七章:输入和输出流第一节:数据流的基本概念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.输入输出流、文件流

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() 。表示当前目录

Java高级复习

12、线程间通信:wait()和notify()相互通知对方。
基本知识点:
1、Thread:系统提供的线程类
start():启动线程
sleep():让当前线程休眠指定的时间
yield():让当前线程让出CPU,然后进行调度
join():只有执行完当前线程后,才能继续执行后面的代码
6、HttpURLConnection:是URLConnection的子类,专门用于HTTP协议。
案例:
1、TCP通信
2、UDP通信
3、Thread(难点非重点)
基本概念:
1、同步:按先后的次序执行。
2、异步:没有次序,同时执行。
3、程序:指令(CPU可以执行的命令)的有序集合。一般以文件的方式存储在硬盘中(是程序的静态表现)。
clazz.getDeclaredConstructor(构造的参数列表):获取类中定义的指定的构造函数
newInstance():调用类的默认构造初始化类的对象
3、Field:表示了类的成员变量
4、Method:表示了类的成员方法
method.invoke(类的对象, 实际参数列表):调用成员方法
2、TCP:传输控制协议,是一个基于连接的协议(要求服务器先启动并在指定的端口上进行监听,然后客户端去请求与服务器连接,连接后才能进行通讯),类似打电话。可以准确无误的传递数据,系统开销较大。
3、UDP:用户数据报协议,是一个无连接的协议(发送方只要把数据发送到指定的端口上就完成了通讯,接收方从指定的端口上接收数据即可),类似发邮件,不能保证数据是否被对方收到,系统开销较小。
5、Constructor:表示了类的构造函数

字节流与字符流的区别详解

字节流与字符流的区别详解先来看⼀下流的概念:在程序中所有的数据都是以流的⽅式进⾏传输或保存的,程序需要数据的时候要使⽤输⼊流读取数据,⽽当程序需要将⼀些数据保存起来的时候,就要使⽤输出流完成。

程序中的输⼊输出都是以流的形式保存的,流中保存的实际上全都是字节⽂件。

字节流与字符流在java.io包中操作⽂件内容的主要有两⼤类:字节流、字符流,两类都分为输⼊和输出操作。

在字节流中输出数据主要是使⽤OutputStream完成,输⼊使的是InputStream,在字符流中输出主要是使⽤Writer类完成,输⼊流主要使⽤Reader类完成。

(这四个都是抽象类)java中提供了专⽤于输⼊输出功能的包Java.io,其中包括:InputStream,OutputStream,Reader,WriterInputStream 和OutputStream,两个是为字节流设计的,主要⽤来处理字节或⼆进制对象,Reader和 Writer.两个是为字符流(⼀个字符占两个字节)设计的,主要⽤来处理字符或字符串.字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,⽽字节流处理单元为1个字节,操作字节和字节数组。

所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符⽽成的,所以它对多国语⾔⽀持性⽐较好!如果是⾳频⽂件、图⽚、歌曲,就⽤字节流好点,如果是关系到中⽂(⽂本)的,⽤字符流好点所有⽂件的储存是都是字节(byte)的储存,在磁盘上保留的并不是⽂件的字符⽽是先把字符编码成字节,再储存这些字节到磁盘。

在读取⽂件(特别是⽂本⽂件)时,也是⼀个字节⼀个字节地读取以形成字节序列字节流可⽤于任何类型的对象,包括⼆进制对象,⽽字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,⽽字符流就可以字节流是最基本的,所有的InputStrem和OutputStream的⼦类都是,主要⽤在处理⼆进制数据,它是按字节来处理的但实际中很多的数据是⽂本,⼜提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进⾏字符集的转化这两个之间通过InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统⼀⽽造成的==================我们还可以看到:============Reader类的read()⽅法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1inputStream的read()虽然也返回int,但由于此类是⾯向字节流的,⼀个字节占8个位,所以返回 0 到 255范围内的 int 字节值。

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