IO分两种流
字节流 InputStream OutputStream
字符流 Reader Writer
他们都是抽象类
具体实现
字节流 FileInputStream FileOutputStream
字符流 FileReader FileWriter
字节流转换成字符流可以用 InputSteamReader OutputStreamWriter
转换成BufferdReader BufferedWriter 他们具有缓冲区
例如:读取文件 从字节流输入到字符流输入
定义一个字节流:
Java代码
FileInputStream fileInputStream = new FileInputStream("d:/text.txt"); // 定义一个指向D:/TEXT.TXT 的字节流
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
//字节流转换成InputStreamReader
BufferedReader bufferedReader = new BufferedReader(inputSteamReader);
//InputStreamReader 转换成带缓存的bufferedReader
FileInputStream fileInputStream = new FileInputStream("d:/text.txt"); // 定义一个指向D:/TEXT.TXT 的字节流 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); //字节流转换成InputStreamReader BufferedReader bufferedReader = new BufferedReader(inputSteamReader); //InputStreamReader 转换成带缓存的bufferedReader
可以把读出来的内容赋值给字符
Java代码
String ss = new String();
String s;
while((s = bufferedReader.readLine())!=null){
ss += s;
}
String ss = new String(); String s; while((s = bufferedReader.readLine())!=null){ ss += s; }
例如:写入文件 从字节流输出到字符流输出
Java代码
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个
指向D:/TEXT.TXT文件
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write(s);
bufferedWriter.close();
outputStreamWriter.close();
fileOutputStream.close();
------------------------------------------------------------
字节流和字符流 如果数据流中最小的数据单元是字节,那么称这种流为字节流;如果数据流中最小的数据单元是字符,那么称这种流为字符流。在Java的IO系统 中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,java.io.Reader 和java.io.Writer分别表示字符输入流和字符输出流。I/O流的层次
1.字节流:
从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。
◇ InputStream、OutputStream
◇ FileInputStream、FileOutputStream
◇ PipedInputStream、PipedOutputStream
◇ ByteArrayInputStream、ByteArrayOutputStream
◇ FilterInputStream、FilterOutputStream
◇ DataInputStream、DataOutputStream
◇ BufferedInputStream、BufferedOutputStream
2.字符流:
从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。
◇ Reader、Writer
◇ InputStreamReader、OutputStreamWriter
◇ FileReader、FileWriter
◇ CharArrayReader、CharArrayWriter
◇ PipedReader、PipedWriter
◇ FilterReader、FilterWriter
◇ BufferedReader、BufferedWriter
◇ StringReader、StringWriter
3.对象流
◇ ObjectInputStream、ObjectOutputStream
4.其它
◇ 文件处理:
File、RandomAccessFile;
◇ 接口
DataInput、DataOutput、ObjectInput、ObjectOutput----------------------------------------------------------------------------------------
IO分两种流
字节流 InputStream OutputStream
字符流 Reader Writer
他们都是抽象类
具体实现
字节流 FileInputStream FileOutputStream
字符流 FileReader FileWriter
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是 音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
字节流转换成字符流可以用 InputSteamReader OutputStreamWriter
转换成BufferdReader BufferedWriter 他们具有缓冲区
例如:读取文件 从字节流输入到字符流输入
定义一个字节流:
Java代码 <embed height="15" width="14" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="always" quality="high" flashvars="clipboard=FileInputStream%20fileInputStream%20%3D%20new%20FileInputStream(%22d%3A%2Ftext.txt%22)%3B%0A%2F%2F%20%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%8C%87%E5%90%91D%3A%2FTEXT.TXT%20%E7%9A%84%E5%AD%97%E8%8A%82%E6%B5%81%20%0A%0AInputStreamReader%20inputStreamReader%20%3D%20new%20InputStreamReader(fileInputStream)%3B%20%0A%2F%2F%E5%AD%97%E8%8A%82%E6%B5%81%E8%BD%AC%E6%8D%A2%E6%88%90InputStreamReader%20%0A%0ABufferedReader%20bufferedReader%20%3D%20new%20BufferedReader(inputSteamReader)%3B%20%0A%2F%2FInputStreamReader%20%E8%BD%AC%E6%8D%A2%E6%88%90%E5%B8%A6%E7%BC%93%E5%AD%98%E7%9A%84bufferedReader%0A%0A%E5%8F%AF%E4%BB%A5%E6%8A%8A%E8%AF%BB%E5%87%BA%E6%9D%A5%E7%9A%84%E5%86%85%E5%AE%B9%E8%B5%8B%E5%80%BC%E7%BB%99%E5%AD%97%E7%AC%A6%20%0AString%20ss%20%3D%20new%20String()%3B%20%0AString%20s%3B%20%0Awhile((s%20%3D%20bufferedReader.readLine())!%3Dnull)%7B%20%0A%20%20%20%20%20%20%20%20ss%20%2B%3D%20s%3B%20%0A%7D%20" src="http://suan2046.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf">
FileInputStream fileInputStream = new FileInputStream("d:/text.txt");
// 定义一个指向D:/TEXT.TXT 的字节流
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
//字节流转换成InputStreamReader
BufferedReader bufferedReader = new BufferedReader(inputSteamReader);
//InputStreamReader 转换成带缓存的bufferedReader
可以把读出来的内容赋值给字符
String ss = new String();
String s;
while((s = bufferedReader.readLine())!=null){
ss += s;
}
FileInputStream fileInputStream = new FileInputStream("d:/text.txt"); // 定义一个指向D:/TEXT.TXT 的字节流 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); //字节流转换成InputStreamReader BufferedReader bufferedReader = new BufferedReader(inputSteamReader); //InputStreamReader 转换成带缓存的bufferedReader 可以把读出来的内容赋值给字符 String ss = new String(); String s; while((s = bufferedReader.readLine())!=null){ ss += s; }
例如:写入文件 从字节流输出到字符流输出
Java代码
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt");
//定义一个指向D:/TEXT.TXT文件
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write(s);
bufferedWriter.close();
outputStreamWriter.close();
fileOutputStream.close();
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个指向D:/TEXT.TXT文件 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); bufferedWriter.write(s); bufferedWriter.close(); outputStreamWriter.close(); fileOutputStream.close();
例程:
将字符串转化为字节流 #region 将字符串转化为字节流
/**/ /// <summary>
/// 将字符串转化为字节流
/// </summary>
/// <param name="_Source"> 字串 </param>
/// <returns> 字节流 </returns>
public static byte [] String2Bytes( string strSource)
{
System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
System.IO.BinaryWriter binaryWriter = new System.IO.BinaryWriter(memoryStream);
binaryWriter.Write( strSource );
byte [] buffer = memoryStream.GetBuffer();
return buffer;
}
#endregion
将字节流转化为字符串 #region 将字节流转化为字符串
/**/ /// <summary>
/// 将字节流转化为字符串
/// </summary>
/// <param name="bytData"> 字节流 </param>
/// <returns> 字串 </returns>
public static string Bytes2String( byte [] bytData)
{
// 字节流->字符串
System.IO.MemoryStream memoryStream2 = new System.IO.MemoryStream(bytData);
System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(memoryStream2);
string s2 = binaryReader.ReadString();
return s2;
}
#endregion
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个 指向D:/TEXT.TXT文件 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); bufferedWriter.write(s); bufferedWriter.close(); outputStreamWriter.close(); fileOutputStream.close();
分享到:
相关推荐
`InputStream`、`OutputStream`、`Reader`和`Writer`是Java IO流的基础类,它们提供了读写文件的基本接口。本篇文章将深入讲解这些类的用法,并提供实际的代码示例,帮助初学者更好地理解和应用。 1. `InputStream`...
在Java编程语言中,输入/输出(I/O)操作是处理数据流的关键部分,而字符流与字节流则是实现这些操作的两种基本方式。理解它们的区别和应用场景对于任何Java开发者来说都是至关重要的。 ### 字节流 字节流是最基本...
在Java中,所有字节流类都是`java.io.InputStream`或`java.io.OutputStream`的子类。这两个类提供了基本的读写操作方法,例如`read()`和`write()`。 **1. 文件输出流(FileOutputStream)** - `FileOutputStream`类...
字符流是基于Unicode编码的,它包括Reader和Writer两大类,分别用于读取和写入字符。Reader是所有字符输入流的基类,如 FileReader,它可以从文件读取字符;而Writer是所有字符输出流的基类,如 FileWriter,用于向...
在Java编程中,有时我们可能需要将一个已经写入数据的`OutputStream`转换为`InputStream`,以便重新读取这些数据。这种情况通常出现在临时存储或处理数据时,例如在网络传输或者存储到内存中的场景。本篇文章将深入...
IO流是Java中的一种基本的数据交换方式,通过InputStream和OutputStream可以实现数据的读取和写入,而Reader和Writer可以实现字符流的读取和写入。IO流的知识点很多,需要认真学习和掌握。 InputStream的类型: * ...
Java 字节流与字符流的介绍 Java 中的流操作可以分为两种:字节流和字符流。字节流是指以 byte 为单位进行读写操作的流...Java 的流操作分为字节流和字符流两种,字节流是最基本的,字符流是为了处理字符而提出来的。
Java的IO体系主要包括两大类:字节流和字符流。本文将详细介绍这两者之间的区别以及如何在实际开发中使用它们。 #### 二、字节流和字符流的概念 ##### 1. 字节流 字节流是处理字节的数据流,它是最基础的数据流...
Java中的字节流和字符流是IO操作中的两种基本类型,它们主要用于数据的输入和输出。字节流处理的数据单位是字节,而字符流处理的是Unicode字符。 字节流: 字节流主要由两个核心类构成:`InputStream`和`...
Java提供了两种主要的IO流类型:字节流(Byte Stream)和字符流(Character Stream)。这两个概念是Java IO体系的基础,也是程序员在处理数据传输时经常遇到的工具。本练习文档将帮助你深入理解并熟练掌握这两种流的...
转换流:在字节流和字符流之间,Java提供了解决两者不兼容问题的转换流,即InputStreamReader和OutputStreamWriter。InputStreamReader是字节输入流到字符输入流的桥梁,而OutputStreamWriter则是字节输出流到字符...
字符流则包括Reader和Writer两个基类,用于处理文本数据。由于文本数据通常基于特定的字符编码,如ASCII、UTF-8或GBK,字符流在传输时会进行编码和解码,以确保数据的正确性。例如, FileReader和FileWriter是用于...
字节流主要包括OutputStream和InputStream两个基类,它们分别是所有字节输出流和输入流的超类。字符流则包括Writer和Reader两个基类,用于实现字符数据的读写。 通过OutputStream类,我们可以将字节数据写入到文件...
1. 什么是流 ...Java中基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流。InputStream类与OutputStream类均为抽象类,我们在实际使用中通常使用Java类库中提
在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...
字符流由Reader和Writer类族构成,如InputStreamReader和OutputStreamWriter,它们分别用于将字节流转换为字符流。字符流在处理Unicode字符集时特别有用,因为它可以正确处理多种语言的字符编码。例如,使用 ...
Java字节流是一种用于处理字节数据的流处理机制,在Java中,字节流不包含边界数据的连续流,字节流是由字节组成的,Java里字符由两个字节组成。字节流是最基本的,它是按字节来处理二进制数据。 字节流基类有:字节...
字符流则分为`Reader`和`Writer`两个基本类,它们分别代表字符输入流和字符输出流。字符流通常用于处理文本数据,例如读写文本文件。实验中,练习七要求使用`PrintWriter`(继承自`Writer`)将用户输入的信息写入...
在Java编程语言中,字节流(Byte Stream)和字符流(Character Stream)是处理输入输出数据的两种基本方式。字节流主要用于处理任何类型的二进制数据,如图片、音频、视频等,而字符流则专为处理基于Unicode编码的...