输入流与输出流
来源:互联网 发布:nba历届全明星mvp数据 编辑:程序博客网 时间:2024/05/21 07:12
PipedInputStream
对象读取,并由其他线程将其写入到相应的 PipedOutputStream
。不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程;public static void input() throws IOException {
FileInputStream fis=new FileInputStream("d:\\1.avi");
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos=new FileOutputStream("D:\\2.avi");
BufferedOutputStream bos=new BufferedOutputStream(fos);
byte []a=new byte[1024];//方法一
int num;//返回的数组个数
while((num=bis.read(a))!=-1){
bos.write(a);
bos.flush();
}
//byte []a =new byte[fis.available()];//方法二
//bos.write(a);
//int num;//方法三
//while((num=bis.read())!=-1){
//bos.write(num);
//}
bos.close();
bis.close();
InputStream a = System.in;;
StringBuilder str =new StringBuilder();
int num;
while(( num=a.read())!=-1){
if(num=='\r')
continue;
if(num=='\n'){
String temp=str.toString();
System.out.println(temp.toUpperCase());
str.delete(0, str.length());
if("over".equals(temp)){
break;
}
}else{
str.append((char)num);
}
}
a.close();
}
实现一个文件合并器,能够将切割的文件合并成原来的文件。package com.king.splitfile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Properties;
public class SplitFile {
public static void main(String []args) throws IOException{
File aim=new File("D:\\1.jpg");
int length=1024*1024;
File dest=new File("D:\\splitFile");
if(!dest.exists()){
dest.mkdir();
}
splitFile(aim, length, dest);
}
/**
* 创建方法实现对文件的分割传入参数:源文件,分割大小,目的地目录
* @param file
* @param length
* @param dest
* @throws IOException
*/
public static void splitFile(File file,int length,File dest) throws IOException {
FileInputStream fis=new FileInputStream(file);
//ArrayList<FileOutputStream> arr=new ArrayList<FileOutputStream>();
FileOutputStream fos;
byte[] size=new byte[length];
int num=0;
int count=0;
while((num=fis.read(size))!=-1){
fos=new FileOutputStream(new File(dest,count+".part"));
fos.write(size);
fos.close();
count++;
}
fis.close();
Properties pop=new Properties(); //创建配置信息,用来储存分割前的名字
pop.setProperty("name", file.getName());
pop.setProperty("part", count+"");
pop.store(new FileOutputStream(new File(dest,"split.properties")), "");
}
}
package com.king.splitfile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Properties;
import com.king.splitfile.util.SuffixFilter;
public class MergeFile {
public static void main(String[] args) throws IOException {
File aim=new File("D:\\splitFile");
File dest =new File("D:\\splitFile");
if(!dest.exists()){
dest.mkdir();
}
mergeFile(aim, dest);
}
public static void mergeFile(File aim,File dest) throws IOException {
ArrayList<FileInputStream> arr=new ArrayList<FileInputStream>();//创建容器存放连接切割文件的流
FileInputStream fis = null;//连接配置文件的流
SuffixFilter sf=new SuffixFilter(".part");//文件名筛选器
//运用迭代将目标目录进行分类连接
File []list=aim.listFiles(sf);
for(int i=0;i<list.length;i++){
arr.add(new FileInputStream(list[i]));
}
File[] pro=aim.listFiles(new SuffixFilter(".properties"));
fis=new FileInputStream(pro[0]);
//加载配置文件
Properties pop=new Properties();
pop.load(fis);
int part=Integer.parseInt(pop.getProperty("part"));
//检查分割文件与配置文件中的数量是否相符
if(part!=arr.size()){
System.out.println("分割文件数量不对!!");
}else{
//将连接不同文件的分割流加入到SequenceInputStream流中
Enumeration<FileInputStream> en=Collections.enumeration(arr);
SequenceInputStream sis=new SequenceInputStream(en);
//将流写出到合并文件中去
FileOutputStream fos=new FileOutputStream(new File(dest,pop.getProperty("name")));
byte [] b=new byte[1024];
int num=0;
while((num=sis.read(b))!=-1){
fos.write(b,0,b.length);
fos.flush();
}
sis.close();
fos.close();
}
fis.close();
}
}
- 输入与输出,流!
- 输入流与输出流
- 输入流与输出流
- IO流-输入与输出
- java输入与输出流
- 输入流与输出流学习1
- 输入流与输出流的总结
- Java输入流与输出流
- 关于输入流与输出流
- 数据输入流与数据输出流
- java字符输入流与输出流
- 输入字节流与输出字节流
- 输入字符流与输出字符流
- 输入流与输出流的区别
- 输入流与输出流的区别
- IO输入与输出--节点流--01
- IO输入与输出--处理流--03
- JAVA---IO流的输入与输出
- 写程序时遇到的一点小知识点,不断补充中……
- String、StringBuilder和StringBuffer的区别(转载)
- java内存分析(转载)
- java运行的详细内存分析,精确到每一步!!!!
- css三大特性
- 输入流与输出流
- File类
- 网络编程
- eclipse一闪而过的解决方式(转载)
- java中产生随机数的方法
- IK Analyzer分词工具(转载)
- 正则表达式
- 时间 日期 相关类
- java中跳出多重循环的方法