打印流:
该流提供了打印方法,可以将各种数据类型的数据都原样打印。
字节打印流
PrintStream
构造函数可以接受的参数类型
1.file对象,File
2.字符串路径:String
3.字节输出流。OutPutStream
字符打印流:
PrintWriter
1.file对象,File
2.字符串路径:String
3.字节输出流。OutPutStream
4.字符输出流,Writer
该流提供了打印方法,可以将各种数据类型的数据都原样打印。
字节打印流
PrintStream
构造函数可以接受的参数类型
1.file对象,File
2.字符串路径:String
3.字节输出流。OutPutStream
字符打印流:
PrintWriter
1.file对象,File
2.字符串路径:String
3.字节输出流。OutPutStream
4.字符输出流,Writer
字节打印流实例:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class PrintStreamDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
// 把信息输出到控制台
// PrintWriter out=new PrintWriter(System.out,true);
//把信息输出到文件中
PrintWriter out=new PrintWriter(new BufferedOutputStream( new FileOutputStream("D:\\b\\tru.txt")),true);
String line=null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
out.println(line);
}
bufr.close();
out.close();
}
}
properties类:
properties是hashTable的子类也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。
是集合中和IO技术相集合的集合容器
该对象的特点:可以用于键值对行驶的配置文件
那么在加载数据时,需要数据有固定的格式 键=值
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
loadDemo();
}
public static void loadDemo() throws IOException{
FileInputStream fis=new FileInputStream("E:\\my.ini");
Properties prop=new Properties();
prop.load(fis);
// System.out.println(prop);
//将数据加载到流中
prop.list(System.out);
prop.setProperty("port", "22222");
FileOutputStream fos=new FileOutputStream("E:\\my.ini");
prop.store(fos,"dfsklfj");
fis.close();
}
public static void method_1() throws IOException{
//演示:如何将流中的数据存储到集合集合中
//想要将my.ini中的键值对存储到集合中
/*1.用流和my.ini文件关联
2.读取一行数据,将该行数据用"="进行切割
3.等号左边作为键,右边作为值,存入到Properties集合中即可
*/
BufferedReader bufr=new BufferedReader(new FileReader("E:\\my.ini"));
String line=null;
Properties prop=new Properties();
while((line=bufr.readLine())!=null)
{
String strs[]=line.split("=");
prop.setProperty(strs[0], strs[1]);
System.out.println(strs[0]+"="+strs[1]);
}
bufr.close();
}
private static BufferedReader BufferedReader(FileReader fileReader) {
// TODO Auto-generated method stub
return null;
}
//设置和获取元素
public static void setAndGet(){
Properties prop=new Properties();
prop.setProperty("zhangsan", "21");
prop.setProperty("lis", "39");
// System.out.println(prop);
// String str=prop.getProperty("zhangsan");
// System.out.println(str);
Set<String> names=prop.stringPropertyNames();
for(String s:names)
{
System.out.println(s+"..."+prop.getProperty(s));
}
}
}
序列流: SequenceInputStream
把多个流对象合并成一个 流对象。
它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
public class SequenceDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建一个集合对象,里面的放的对象是FileInputStream
Vector<FileInputStream> v=new Vector<FileInputStream>();
//向集合中添加元素
v.add(new FileInputStream("E:\\1.txt"));
v.add(new FileInputStream("E:\\3.txt"));
v.add(new FileInputStream("E:\\2.txt"));
//获取此集合的枚举类型
Enumeration<FileInputStream> enu=v.elements();
//创建一个带有Enumeration参数的序列流
SequenceInputStream sis=new SequenceInputStream(enu);
//带有缓冲区的字节输出流
BufferedOutputStream bufo=new BufferedOutputStream(new FileOutputStream("E:\\4.txt"));
byte b[]=new byte[1024];
int len=0;
while((len=sis.read(b))!=-1)
{
bufo.write(b, 0, len);
bufo.flush();
}
sis.close();
bufo.close();
}
}
运用学过的IO流类:
把一个大文件切割成若干小文件,然后再合并成一个大文件
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import javax.sound.midi.Sequence;
public class SplitFile {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// split();
merge();
}
//分割文件,分割成1M大小的块
public static void split() throws IOException{
//创建输入流对象
FileInputStream fis=new FileInputStream("D:\\a\\123456.mp3");
FileOutputStream fos=null;
byte[] buf=new byte[1024*1024];
int len=0;
int count=0;
while((len=fis.read(buf))!=-1)
{
fos=new FileOutputStream("D:\\a\\"+(count++)+".part");
fos.write(buf, 0, len);
fos.close();
}
fis.close();
}
//把分割的文件合并
public static void merge() throws IOException{
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
for(int i=1;i<8;i++){
al.add(new FileInputStream("D:\\a\\"+i+".part"));
}
final Iterator<FileInputStream> it=al.iterator();
Enumeration<FileInputStream> enu=new Enumeration<FileInputStream>() {
@Override
public boolean hasMoreElements() {
// TODO Auto-generated method stub
return it.hasNext();
}
@Override
public FileInputStream nextElement() {
// TODO Auto-generated method stub
return it.next();
}
};
SequenceInputStream sis=new SequenceInputStream(enu);
BufferedOutputStream bufo=new BufferedOutputStream(new FileOutputStream("D:\\paret.mp3"));
byte [] buf=new byte[1024*1014];
int len;
while((len=sis.read(buf))!=-1)
{
bufo.write(buf, 0, len);
bufo.flush();
}
bufo.close();
sis.close();
}
}