IO
1.认识InputStream、OutputStream、FileWriter、FileReader、BufferedInputStream、 BuferrOutputStream、BufferedWriter、BufferedReader、InputStreamReader、 OutputStreamWriter.
--------------------------------------------------------------------------------------
InputStream、OutputStream为字节流。(read、write)
FileWriter、FileReader为字符流。(read、write)
BufferedInputStream、BuferrOutputStream为字节缓存流。(read、write)
BufferedWriter、BufferedReader为字符流。(read、write、readLine、newLine换行)
InputStreamWriter、OutputStreamReader为字节转字符。
用例:
------------------------------------------------------------
InputStream、OutputStream、BufferedInputStream、BuferrOutputStream:
String srcPath="D:/Users/Miss/javaEE--马士兵/马士兵第二季视频/picture";
String desPath="D:/Users/Miss/javaEE--马士兵/马士兵第二季视频/picture1";
InputStream is=new FileInputStream(srcPath);
OutputStream out=new FileOutputStream(desPath,true);//只针对文本true可以追加 (append)false覆盖
BufferededInputStream is=new BufferededInputStream(new FileInputStream(src));
BufferededOutputStream out=new BufferededOutputStream(new FileOutputStream (des,true));
byte [] b=new byte[1024];
int len=0;
while ((len=is.read(b))!=-1){
out.write(b,0,len);
}
out.close();
is.close();
--------------------------------------------------------------------------------------
FileWriter、FileReader、BufferedWriter、BufferedReader:
String srcPath="D:/Users/Miss/javaEE--马士兵/马士兵第二季视频/picture";
String desPath="D:/Users/Miss/javaEE--马士兵/马士兵第二季视频/picture1";
FileReader is=new FileReader(srcPath);
FileWriter out=new FileWriter(desPath,true);//只针对文本true可以追加(append) false覆盖
char [] b=new char[1024]; //不同处
while ((len=is.read(b))!=-1){
out.write(b,0,len);
}
BufferedReader is=new BufferedReader(new FileReader(srcPath));
BufferedWriter out=new BufferedWriter(new FileWriter(desPath,true));
String str=null;
while((str=is.readLine())!=null){
out.write(str);
}
out.flush;
out.close();
is.close();
-------------------------------------------------------------------------------------
InputStreamReader、OutputStreamWriter
BufferedWriter br=new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(new Fil("D:/Users/Miss"))
)
);
String str=null;
while((str=is.readLine())!=null){
out.write(str);
}
-----------------------------------------------------------------------------
2.DataInputStream、DataOutputStream(可以存储对应类型的数据)
用例:
DataOutputStream dos=new DataOutputStream(
new FileOutputStream(
new File("c:/hahahs.txt")
)
);
dos.writeInt(666);
dos.writeDouble(2.5);
dos.writeLong(100L);
dos.writeUTF("haha,嘻嘻");
dos.flush();
dos.colse;
DataInputStream dis=new DataInputStream(
new BufferedInputStream(
new FileInputStream(
new File("c:/hahahs.txt")
)
)
);
dis.readInt(666);
dis.readDouble(2.5);
dis.readLong(100L);
dis.readUTF("haha,嘻嘻");
dis.colse;
注意:这里读取顺序必须和写入顺序相同。
-----------------------------------------------------------------------------------
2.ObjectInputStream、ObjectOutputStream (详情请看序列化与反序列化)
----------------------------------------------------------------------------
3.RandomAccessFile中重要方法:seek(int index);可以用来更具大小分割文件,getFilePointer() 返回文件记录指针的当前位 置,而seek();方法就 是从第几个开始读。(rw表示可读可写)
用例:
RandomAccessFile raf=new RandomAccessFile(new File("c:/haha.text"),"rw");
if(raf.len)
raf.seek(66)表示你要从第66个字节开始读
btye[] flush=new btye[1024];
int len=0;
while(-1!=(len=raf.read(flush))){
System.out.println("new String(flush,0,len)");
}
--------------------------------------------------------------------------------
4.byteArrayInputStream,byteArrayOutputStream(相当于一个容器)
byte[] buff = new byte[] { 2, 15, 67, -1, -9, 9 };
ByteArrayInputStream in = new ByteArrayInputStream(buff);
int data = in.read();
while (data != -1) {
System.out.println(data + " ");
data = in.read();
}
in.close();// ByteArrayInputSystem 的close()方法实际上不执行任何操作
ByteArrayoutputStream bout=new ByteArrayOutputStream();
bout.write(int a); bout.write(int b); bout.write(int c);
byte[] buf=bout.toByteArray();//获取内存缓冲中的数据
for(int i=0;i<=buf.length;i++)
{
System.out.println(buf.toString);
}
bout.close();
---------------------------------------------------------------------------
5.DataInputStream、DataOutputStream(可以存储对应类型的数据)
用例:
ByteArrayOutputStream bout=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(bout);
String name="suntao";
int age=19;
dos.writeUTF(name);
dos.writeInt(age);
dos.writeDouble(2.5);
dos.writeLong(100L);
dos.writeUTF("haha,嘻嘻");
byte[] buf=bout.toByteArray();//获取内存缓冲区中的数据
dos.close();
bout.close();
ByteArrayInputStream bin=new ByteArrayInputStream(byte[] buf);
DataInputStream dis=new DataInputStream(bin);
String name=dis.readUTF();//从字节数组中读取
int age=dis.readInt();
dis.readDouble();
dis.readLong();
dis.readUTF();
dis.close();
bin.close();
注意:这里读取顺序必须和写入顺序相同。还可以在里面放InputStream、OutputStream