打印流
打印流包括:PrintStream和PrintWriter。该流提供了打印方法,可将各种类型的数据都原样打印
字节打印流:PrintStream
构造方法中可接收的参数类型:
1、file对象。File
2、字符串路径:String
3、字符输出流:OutputStream
字符串打印流:PrintWriter
构造方法中可接受的参数类型
1、file对象:File
2、字符串路径:String
3、字节输出流:OutputStream
4、字符输出流:Writer
import java.io.*;
class PrintDemo
{
public static void main(String[] args) throws IOException
{
//键盘录入,创建读取流对象
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//使用打印流,将文件输出
//输出到屏幕
PrintWriter out = new PrintWriter(new FileWriter("a.txt"),true);
String line = null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
out.println(line.toUpperCase());
//out.flush();
}
bufr.close();
out.close();
}
}
合并流
SequenceInputStream可以将多个流连接成一个源。
构造函数:SequenceInputStream(Enumeration<? extends FileInputStream> e)
如何合并多个文件:
1、创建集合,并将流对象添加进集合
2、创建Enumeration对象,将集合元素加入。
3、创建SequenceInputStream对象,合并流对象
4、创建写入流对象,FileOutputStream,将数据写入流资源
5、定义数组,将读取流数据存入数组,并将数组中元素写入文件中。
例如:假设有三个文件,将三者合并到一个新文件中 //合并流对象
public static void sequenceFile()throws IOException
{
FileOutputStream fos = null;
SequenceInputStream sis = null;
try
{
//创建集合,存储多个文件
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for(int i=1;i<=3;i++)
{
al.add(new FileInputStream(i+".part"));
}
//匿名内部类访问局部变量要final
final Iterator<FileInputStream> it = al.iterator();
//创建Enumeration匿名对象
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
//合并流对象,将集合元素加入。
sis = new SequenceInputStream(en);
//创建写入流对象,FileOutputStream
fos = new FileOutputStream("7.bmp");
byte[] b = new byte[1024*1024];
int len = 0;
//循环,将数据写入流资源
while((len=sis.read(b))!=-1)
{
fos.write(b);
}
}
catch (IOException e)
{
throw new RuntimeException("文件操作失败");
}
//关闭流资源
finally
{
try
{
if(fos!=null)
fos.close();
}
catch (IOException e)
{
throw new RuntimeException("关闭流资源操作失败");
}
try
{
if(sis!=null)
sis.close();
}
catch (IOException e)
{
throw new RuntimeException("关闭流资源操作失败");
}
}
}
切割流资源
1、先关联文件FileInputStream
2、定义写入流变量:FileOutputStream
3、创建数组,并定义切割所需的大小|
4、循环读写数据,并每次创建一个新写入流,创建完后并写入文件中
5、关闭流资源
//切割流对象
public static void splitFile()throws IOException
{
//创建全局变量
FileInputStream fis = null;
FileOutputStream fos = null;
try
{
//创建文件读取流
fis = new FileInputStream("0.bmp");
//创建数组
byte[] b = new byte[1024*1024];
int len = 0;
//计数器
int count = 1;
//循环写入数据
while((len=fis.read(b))!=-1)
{
//每次创建一个新写入流,写入后关闭流资源
fos = new FileOutputStream((count++)+".part");
fos.write(b,0,len);
fos.close();
}
}
catch (IOException e)
{
throw new RuntimeException("关闭流资源操作失败");
}
//关闭流资源
finally
{
try
{
if(fis!=null)
fis.close();
}
catch (IOException e)
{
throw new RuntimeException("关闭流资源操作失败");
}
}
}
}
详细请查看: http://edu.csdn.net