------- android培训、java培训、期待与您交流! ----------
在java编程中,I/O系统主要负责文件的读写。一般在运行程序时,java I/O程序将源磁盘,文件或网络上的数据通过输入流类的相应方法读入内存,然后通过输出流类的相应方法将处理完的数据写回目标文件,磁盘或网络资源指定的位置。
主要分为2大类:
1.字符流
两个抽象流类:
Writer
Reader
其中FileWriter和FileReader可实现文件的读写操作
BufferedWriter和BufferedReader能够提供缓冲区功能,用以提高效率
2.字节流
两个抽象流类
InputStream
OutputStream
其中FileInputStream和FileOutputStream实现文件读写操作
BufferedInputStream和BufferedOutputStream提供缓冲区功能
InputStreamReader:字节输入转换流,把字节流转成字符流
OutputStreamWriter:字节输出转换流,把字节流转成字符流
例子1:用字符流任意拷贝一个文本文件到D盘根目录下
public class Test {
public static void main(String[] args) {
copyFile(new File("D:\\in.txt"),new File("E:\\in_copy.txt"));
}
public static void copyFile(File f1,File f2){
BufferedReader br = null;
BufferedWriter bw = null;
try{
br = new BufferedReader(new FileReader(f1));
bw = new BufferedWriter(new FileWriter(f2));
String value = null;
while((value = br.readLine())!=null){
bw.write(value);
bw.newLine();
bw.flush();
}
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(br!=null)
br.close();
if(bw!=null)
bw.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}
例子2:
用字节流任意拷贝一个图片文件到D盘根目录下
import java.io.*;
public class Test {
public static void main(String[] args) {
copyFile(new File("D:\\RMB.jpg"),new File("e:\\RMB_copy.jpg"));
}
public static void copyFile(File f1,File f2){
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try{
bis = new BufferedInputStream(new FileInputStream(f1));
bos = new BufferedOutputStream(new FileOutputStream(f2));
byte[] buf = new byte[1024];
int len = 0;
while((len = bis.read(buf))!=-1){
bos.write(buf,0,len);
bos.flush();
}
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(bis!=null)
bis.close();
if(bos!=null)
bos.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}
例子3:
把键盘录入的数据存储到一个文件中
import java.io.*;
public class Test{
public static void main(String[] args) {
keyBoardToFile(new File("E:\\in.txt"));
}
public static void keyBoardToFile(File file){
BufferedReader br = null;
BufferedWriter bw = null;
try{
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new FileWriter(file));
String value = null;
while((value = br.readLine())!=null){
if("over".equals(value)){
break;
}
bw.write(value);
bw.newLine();
bw.flush();
}
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(br!=null)
br.close();
if(bw!=null)
bw.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}
例子4:
列出目录下所有内容-递归
import java.io.*;
public class Test {
public static void main(String[] args) {
showFiles(new File("E:\\workspace"));
}
public static void showFiles(File file){
File[] files = file.listFiles();
for(File f:files){
if(f.isDirectory()){
showFiles(f);
}
else{
System.out.println(f.getName());
}
}
}
}
例子5:
将一个MP3文件拆分成碎片文件,按照2Mb均分
import java.io.*;
public class Test {
public static void main(String[] args) {
splitFile(new File("d:\\File.mp3"));
}
public static void splitFile(File file){
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try{
bis = new BufferedInputStream(new FileInputStream(file));
int conut = 1;
byte[] buf = new byte[1024*1024*2];
int len = 0;
while((len = bis.read(buf))!=-1){
bos = new BufferedOutputStream(new FileOutputStream("F:\\Test\\"+conut++ + ".part"));
bos.write(buf,0,len);
bos.close();
}
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(bis!=null)
bis.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}
例子6:将那些碎片文件合并成完整的MP3文件
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) {
mergeFile(new File("f:\\Test"));
}
public static void mergeFile(File file){
File[] files = file.listFiles();
BufferedOutputStream bos = null;
SequenceInputStream sis = null;
try{
Vector<FileInputStream> vec = new Vector<FileInputStream>();
for(File f:files){
if(f.isFile()&&f.getName().endsWith(".part")){
vec.add(new FileInputStream(f));
}
}
Enumeration<FileInputStream> en = vec.elements();
sis = new SequenceInputStream(en);
bos = new BufferedOutputStream(new FileOutputStream("f:\\Test\\myFile.mp3"));
byte[] buf = new byte[1024];
int len = 0;
while((len = sis.read(buf))!=-1){
bos.write(buf,0,len);
bos.flush();
}
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(bos!=null)
bos.close();
if(sis!=null)
sis.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}