您的位置:首页 > 编程语言 > Java开发

开始学习java3 输入输出流

2015-02-12 16:32 323 查看
inputStrem outPutStem 结尾的流类 一次检查1个字节。

read wridt 结尾的流类 一次检查2个字节 即一个字符。

流在输入输出结束之后 利用close() 的方法结束流的传输。

System.exit(-1)退出程序。

public class Hello {

public static void main(String[] args)
{
int b = 0;
FileInputStream a  = null;
FileOutputStream c = null;
try{

a = new FileInputStream("D://Hello.class");
c = new FileOutputStream("D://HelloEveryOne1.java");

while((b = a.read()) != -1){

c.write(b);

}
a.close();
c.close();

}catch(FileNotFoundException eo){

System.out.print("找不到!");
System.exit(-1);
}
catch(IOException eo){

System.out.print("文件读取错误");
}

System.out.print("文件复制成功");

}
}


FileInputStream 与 FileOutpubStrem 的用法,利用每次读取一个字节然后将字节写入文件中,结束之后close完成复制过程。

FileReader  FileWriter 的用法,类似,不过每次读取2个字节,可以完成中文的输出,不过利用自定义的txt要完成utf-8的编码格式才可以正确的显示。

这些所谓的流类可以理解为一条管道,链接到指定文件的管道,然后利用这个管道向外或者向内传输数据。

如果直接是程序与文件一条管道直接连接,称之为字节流。如果在管道上在套上其他的过滤管道,这些过滤管道称为处理流。

BufferedInputSteam mark(标记某个节点,以后从这个节点开始) reset(重新从标记的节点开始)

 Buffered的相应的处理流的构造函数的参数依托于对应的inputStrem,outStream,reader,writer的相应的流类。

然后Buffered就有相应多的方法来操作这些流数据。

BufferedReader newLine() 写入时候的换行  readLine() 读的时候的整读一行字符。

InputStreamReader outPutStreamWriter 处理流的类用来转换,字节处理转为字符处理。

ByteArrayInputStream 字符数组流  ByteOutputStream input 和output是以程序为参考系来作为对象的

在定义ByteArrayInputStream时候,即是input到外面,即是写入的环节,这个时候当new的时候,会在内存里面申请

一块空间,然后形象的有一条管道负责输入不同的字节进去,这时如果需要输入不同的数据类型,利用dataInputStream

套在管道的外面,形成第二管道,扩大填充的范围,这样就可以根据writeLong writeBoolean等格式的写入方法满足要

求。

接着要从那块内存里面读取数据,即要弄另外一条输出管道,这里利用byteArrayOutputStream(.toByteArray)之前的

节点流数据读取byte数组进入到这里,才知道读出的内容范围。然后再需要再套个管道 dataOutputStream读取各式的

数据类型,这里根据我们之前填充的顺序,先写先读,通过不同的read方法。

flush 清除小桶里面缓存的东西

print 与 println 的区别 后者是输出之后换行 不会抛出异常

printStream 输入流 将System.out.print() 转移输出的目的地 利用 Syste.setOut(printStream类型);

再利用两条管道的套用,FileoutputStream将sysetm.out.print()的print东西输出到我们创的文件中。

PrintStream ps = null;

try{

FileOutputStream a = new FileOutputStream("D://20150213.txt");
ps = new PrintStream(a);
}catch(IOException eo){

System.out.print("输入错误");
}

if(ps != null){

System.setOut(ps); //将out出来的路径转化
}
int ln = 0;
for(byte c = 0 ; c < 50000; c++){

System.out.print(c + "  ");
if(ln++ >= 100){
System.out.println();
ln = 0;
}
}
//		System.setOut(null);
System.out.print("输入成功");


String s = null;
BufferedReader br  = new BufferedReader(new InputStreamReader(System.in)); //借助BufferedReader可以调用它的readLine()方法 利用 System.in
<span style="white-space:pre">									</span>   获取面板输入的东西,它就是一个小桶暂存区。																</span>
try{

FileWriter fw = new FileWriter("d://20150214.txt"); //新建一txt文档
PrintWriter log =  new PrintWriter(fw);   //输入方式改变,由面板输入
while((s = br.readLine()) != null){
if(s.equalsIgnoreCase("exit"))
break;

System.out.println(s);
System.out.println("--------------------");
log.println(s);
log.flush();

}
log.println("===" + new Date() + "===");//打印当前的时间
log.flush();
log.close();
}catch(IOException eo){

}


printStream 输入流 将System.out.print() 转移输出的目的地 利用 Syste.setOut(printStream类型);

再利用两条管道的套用,FileoutputStream将sysetm.out.print()的print东西输出到我们创的文件中。

serializable 接口 不需要重写方法 仅标明可以序列化

ObjectOutStream 结合 FileOutputStream的方法,先定义一个文件,接通第一条管道到文件那里,然后再利用

ObjectOutStream 通过 writeObject()的方法,把我们需要传输的类写进去。

调用的时候通过FileInputStream()先读到某个文件,即相当于先接通条管道,再利用ObjectInputStream利用

readObejct() 再通过类型的强转,获得我们需要的类。需要serializable可以序列化。

Num testNum = new Num();
testNum.a = 2015;
testNum.b = 2;
testNum.c = 13;
try{

FileOutputStream a = new FileOutputStream("D://20140214.txt");
ObjectOutputStream b = new ObjectOutputStream(a);
b.writeObject(testNum);
b.flush();
b.close();

FileInputStream e = new FileInputStream("D://20140214.txt");
ObjectInputStream f = new ObjectInputStream(e);
Num readNum = (Num) f.readObject();
System.out.print(readNum.a);

}catch(ClassNotFoundException er){

}
catch(FileNotFoundException er){

}

catch(IOException er){

System.out.print("123");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: