在Java语言的IO编程中,读取文件是分两个步骤:1、将文件中的数据转换为流,2、读取流内部的数据。其中第一个步骤由系统完成,只需要创建对应的流对象即可,对象创建完成以后步骤1就完成了,第二个步骤使用输入流对象中的read方法即可实现了。
使用输入流进行编程时,代码一般分为3个部分:1、创建流对象,2、读取流对象内部的数据,3、关闭流对象。下面以读取文件的代码示例:
import java.io.*;
/**
* 使用FileInputStream读取文件
*/
public class ReadFile1 {
public static void main(String[] args) {
FileInputStream fis = null; //声明流对象
try{
fis = new FileInputStream("e:\\a.txt"); //创建流对象
//读取数据,并将读取到的数据存储到数组中
byte[] data = new byte[1024]; //数据存储的数组
int i = 0; //当前下标
//读取流中的第一个字节数据
int n = fis.read();
//依次读取后续的数据
while(n != -1){ //未到达流的末尾
//将有效数据存储到数组中
data[i] = (byte)n;
//下标增加
i++;
//读取下一个字节的数据
n = fis.read();
}
//解析数据
String s = new String(data,0,i);
//输出字符串
System.out.println(s);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
//关闭流,释放资源
fis.close();
}catch(Exception e){}
}
}
}
下面的示例代码是使用另外一个read方法实现读取的代码:
import java.io.FileInputStream;
/**
* 使用FileInputStream读取文件
*/
public class ReadFile2 {
public static void main(String[] args) {
//声明流对象
FileInputStream fis = null;
try{
//创建流对象
fis = new FileInputStream("e:\\a.txt");
//读取数据,并将读取到的数据存储到数组中
byte[] data = new byte[1024]; //数据存储的数组
int i = fis.read(data);
//解析数据
String s = new String(data,0,i);
//输出字符串
System.out.println(s);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
//关闭流,释放资源
fis.close();
}catch(Exception e){}
}
}
}
使用输出流进行编程的步骤是:
1、建立输出流
建立对应的输出流对象,也就是完成由流对象到外部数据源之间的转换。
2、向流中写入数据
将需要输出的数据,调用对应的write方法写入到流对象中。
3、关闭输出流
在写入完毕以后,调用流对象的close方法关闭输出流,释放资源。
下面以FileOutputStream为例子说明输出流的使用。示例代码如下:
import java.io.*;
/**
* 使用FileOutputStream写文件示例
*/
public class WriteFile1 {
public static void main(String[] args) {
String s = "Java语言";
int n = 100;
//声明流对象
FileOutputStream fos = null;
try{
//创建流对象
fos = new FileOutputStream("e:\\out.txt");
//转换为byte数组
byte[] b1 = s.getBytes();
//换行符
byte[] b2 = "\r\n".getBytes();
byte[] b3 = String.valueOf(n).getBytes();
//依次写入文件
fos.write(b1);
fos.write(b2);
fos.write(b3);
} catch (Exception e) {
e.printStackTrace();
}finally{
try{
fos.close();
}catch(Exception e){}
}
}
}