---恢复内容开始---
定义
在JAVA.IO中可以找到文档
一串数据像河流一样,先进先出的方式通过
输入流:读操作;
输出流:写操作;
File类的使用
packagecom.jiedada.fil;importjava.io.File;importjava.io.IOException;public classlif {public static voidmain(String[] args) {//TODO Auto-generated method stub//创建File
File file=new File("f:\\qq\\qq");
System.out.println("是不是目录:"+file.isDirectory());
System.out.println("是不是文件:"+file.isFile());//添加目录
File file1=new File("f:\\qq\\qq\\qq","HashSet");if(!file1.exists())
{
file1.mkdirs();
}
File file2=new File("f:\\qq\\qq1");//添加文件
if(!file2.exists())
{try{
file2.createNewFile();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
View Code
file是文件的意思
字节流
FileInputSteam读取文件,视频等等0 1序列的输入常用方法
每次都要释放出系统占有的资源
对象。close方法;
packagecom.jiedada.fil;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;public classFileInouteStea {public static voidmain(String[] args) {//TODO Auto-generated method stub
File file=new File("f:\\qq\\qq\\qq.txt");try{
FileInputStream filein=newFileInputStream(file);//输出的几种方式
/*int n=filein.read();
while(n!=-1) {
System.out.print((char)n);
n=filein.read();
}*/
//第二种
/*int n=0;
while((n=filein.read())!=-1)
{
System.out.print((char)n);
}*/
//第三种
byte b[]=new byte[100];
filein.read(b,0, 5);
System.out.print(newString(b));
filein.close();
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
View Code
输入输出流的方法
packagecom.jiedada.fil;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;public classrw {public static voidmain(String[] args) {//TODO Auto-generated method stub//定义输入输出流
try{
FileInputStream fis=new FileInputStream("f:\\qq\\read\\pulpit.jpg");
FileOutputStream fos=new FileOutputStream("f:\\qq\\read\\otherpulpit.jpg");int n=0;byte b[]=new byte[1024];if((n=fis.read(b))!=-1) {//读入相同大小的图片
fos.write(b,0,n);
}//必须执行
fis.close();
fos.close();
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}//这个判定也很重要
catch(IOException e) {
e.printStackTrace();
}
}
}
View Code
缓冲流
因为在硬盘中读写的速度太慢了所以我们需要增加程序的数度需要用到
BUfferedInputSteam
BufferedOutputSteam
packagecom.jiedada.fil;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.nio.BufferOverflowException;public classsad {public static voidmain(String[] args) {//TODO Auto-generated method stub
try{
FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");
BufferedInputStream bis=newBufferedInputStream(fis);
FileOutputStream fos=new FileOutputStream("f:\\qq\\qq\\qq.txt");
BufferedOutputStream bos=newBufferedOutputStream(fos);long start=System.currentTimeMillis();
bos.write(10);
bos.write('a');//如果没有这样的语句就无法显示在文件中,而是放在其他位置
bos.flush();
System.out.println(bis.read());
System.out.println((char)bis.read());long end =System.currentTimeMillis();
System.out.println(end-start);//必须写入
bos.close();
fos.close();
bis.close();
fis.close();
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
View Code
字符流
和字节流基本差不多
packagecom.jiedada.fil;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;public classStringFile {public static voidmain(String[] args) {//TODO Auto-generated method stub
try{
FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");
InputStreamReader isd=newInputStreamReader(fis);
BufferedReader br=newBufferedReader(isd);
FileOutputStream fos=new FileOutputStream("f:\\qq\\qq\\qq1.txt");
OutputStreamWriter osw=newOutputStreamWriter(fos);
BufferedWriter bw=newBufferedWriter(osw);int n=0;char c[]=new char[10];/*while((n=isd.read())!=-1) {
System.out.print((char)n);
}*/
while((n=br.read(c))!=-1) {
osw.write(c,0,n);
osw.flush();
}
fis.close();
isd.close();
fos.close();
osw.close();
br.close();
bw.close();
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
View Code
几个必须,和其中的逻辑关系不要混淆了;
对象的序列化与反序列化
当发送的内容多种多样的时候比如端口什么等等,我们需要发送一个类,这样通过解析我们就能获得我们想要的内容了
需要继承Serializable接口
类的创建
packagecom.jiedada.fil;importjava.io.Serializable;public class Goods implementsSerializable{privateString id;privateString name;private intprice;publicGoods() {
}public Goods(String id, String name, intprice) {super();this.id =id;this.name =name;this.price =price;
}publicString getId() {returnid;
}public voidsetId(String id) {this.id =id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetPrice() {returnprice;
}public void setPrice(intprice) {this.price =price;
}
@OverridepublicString toString() {return "Goods [id=" + id + ", name=" + name + ", price=" + price + "]";
}
}
View Code
测试类的创建
packagecom.jiedada.fil;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;public classGoodsTest {public static voidmain(String[] args) {//TODO Auto-generated method stub//定义一个类
Goods goods=new Goods("s001","diannao",3000);//写出数据
FileOutputStream fos;try{
fos= new FileOutputStream("f:\\qq\\qq\\qq.txt");
ObjectOutputStream oos=newObjectOutputStream(fos);//读入数据
FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");
ObjectInputStream ois=newObjectInputStream(fis);
oos.writeObject(goods);
oos.writeBoolean(true);
oos.flush();
System.out.println(ois.readBoolean());try{
Goods goods1=(Goods)ois.readObject();
System.out.println(goods1);
}catch(ClassNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
fis.close();
fos.close();
oos.close();
ois.close();
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
View Code
---恢复内容结束---