文件的COPY:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/*文件拷贝步骤
* 1.创建源(输入和输出)
* 2.选择流
* 3.操作
* 4.释放资源
*/
public class test7 {
public static void main(String[] args) {
copy("a.txt","b.txt");
}
public static void copy(String srcPath,String destPath) {
//源
File a=new File(srcPath);
File b=new File(destPath);
//输出流和输入流
OutputStream os=null;
InputStream is=null;
try {
os=new FileOutputStream(b);//输入流
is=new FileInputStream(a);//输出流
//操作:分段读取
byte[] flush=new byte[1024];//缓冲容器
int len=-1;
while((len=is.read(flush))!=-1) {
os.write(flush,0,len);
}
os.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {//输入输出流的释放:先打开的后关闭
try {
if(is!=null)
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(os!=null)
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
FileReader和FileWriter在传输IO流时在内部已经自动解码,例如在传输中文时无需转换编码
append()相比write(),可以以一种流的 方式不断写字符 如a.append().append()....
使用FileReader和FileWriter的输入输出字符流:
public class test502 {
public static void main(String[] args) {
//源
File src=new File("a.txt");
//流
Reader reader=null;
try {
reader=new FileReader(src);
//具体操作(读)
char[] flush=new char[1024*5*10];
int len=-1;
while((len=reader.read(flush))!=-1) {
String str=new String(flush,0,len);
System.out.println(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//释放
try {
if(reader!=null)
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class test6 {
public static void main(String[] args) {
//源
File b=new File("b.txt");
//输出流
Writer writer=null;
try {
writer=new FileWriter(b);//true就是不覆盖的情况下追加
//false就是将原来的字符串覆盖
//操作
String msg="Hello 世界";
//写法一 char[] datas=msg.toCharArray();//字符串-》字节数组(编码)
// writer.write(datas, 0, datas.length);
//写法二 writer.write(msg);
//写法三
writer.append("Hello").append("世界");
writer.flush();//需要刷新一下数据
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(writer!=null)
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
字节数组输入流
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/*字节数组输入流
* 1.创建源:字节数组不要太大
* 2.选择流
* 3.操作
* 4.释放资源:可以不用处理
*/
public class test8 {
public static void main(String[] args) {
//源
byte[] src="talk is cheap show me the code".getBytes();
//流
try {
InputStream is=new ByteArrayInputStream(src);
//具体操作(读)
byte[] flush=new byte[1024];//缓冲容器
int len=-1;
while((len=is.read(flush))!=-1) {
String str=new String(flush,0,len);
System.out.println(str);
}
//释放
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/*字节数组输出流 ByteArrayOutputStream
* 1.创建源:内部维护
* 2.选择流:不关联源
* 3.操作
* 4.释放资源:可以不用
* 获取数据:toByteArray()
*/
public class test9 {
public static void main(String[] args) {
//源
byte[] dest=null;
//流
ByteArrayOutputStream baos=null;
try {
baos=new ByteArrayOutputStream();
//具体操作(读)
String msg="show me the code";
byte[] datas=msg.getBytes();//字符串-》字节数组(编码)
baos.write(datas,0,datas.length);
baos.flush();
//释放
dest=baos.toByteArray();
System.out.println(dest.length+"-->"+new String(dest,0,baos.size()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}