码迷,mamicode.com
首页 > 其他好文 > 详细

编程中的文件流

时间:2015-02-25 23:48:08      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

最近在看JAVA核心技术,本以为想看懂一些文件流,还有一些东西,但是自己没有理解。

这里我在网上总结的一些文件流的知识,希望可以对大家理解有帮助!!

   什么是流?

流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会大大提高效率的。



那么

如何判断流是输入流还是输出流?
以内存为参照物,如果数据是向内存流动是输入流, 反之则是输出流

java流分为两种流
1,字节流:可以用于读写二进制文件及任何类型文件byte
2,字符流:可以用于读写文件文本


字节流:输入(InputStream) 输出(OutputStream)
字符流:输入(Reader)         输出(writer)


下面的例子和注释是分别对应着文件流的几个功能的实战:


1、

测试文件属性,首先自己新建一个文件在E:盘下的根目录。


取名字叫做


测试文件.txt

然后运行下列代码:



创建文件

package io;


import java.io.File;


public class IoTest {


public IoTest(){

}

public void IoTest(){

//创建一个文件对象
File ff = new File("E:\\测试文件.txt");

//输出详细信息
System.out.println("文件路径 : " + ff.getAbsolutePath());
System.out.println("文件大小 : " + ff.length());

}
public static void main(String[] args) {
// TODO Auto-generated method stub
IoTest io = new IoTest();
io.IoTest();

}
}





2、创建文件和文件夹

package io;


import java.io.File;
import java.io.IOException;


public class IoTest {


public IoTest(){

}

public void IoTest(){
//下面有几种方法生成文件和目录
//创建一个文件对象
File ff = new File("E:\\测试文件.txt");

//输出详细信息
System.out.println("文件路径 : " + ff.getAbsolutePath());
System.out.println("文件大小 : " + ff.length());

//创建一个文件和创建文件夹

File f = new File("E:\\fff\\hsp.txt");
if(!f.exists()){
//可以创建
try{
f.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
}else{
System.out.println("文件已经存在!!,无需创建!");
}

//判断是否生成文件夹
File fff = new File("E:\\fff");
if(f.isDirectory() && f.exists()){
System.out.println("文件夹已经存在!!");

}else{

//如果不存在则生成文件夹
f.mkdir();
}


//列出文件夹的所有文件
File ffff = new File("E:\\123");
if(ffff.isDirectory()){
File list[] = fff.listFiles();
for(int i = 0; i < list.length; i++){
System.out.println("文件名 :  " + list[i].getName());

}

}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
IoTest io = new IoTest();
io.IoTest();
}


}





3、读取文件内容


package net.test2;


import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;


public class IoTest2 {


public IoTest2(){
File f = new File("E:\\Text.txt");
FileInputStream fis = null;
//因为File没有读写能力,所以需要有个InputStream
try{
fis = new FileInputStream(f);

//定义一个字节数组,相当于缓存
byte[] bytes = new byte[1024];

//定义实际读取到的字节数
int n = 1024;
//循环读取
while((fis.read(bytes) != -1)){
String s = new String(bytes, 0, n);
System.out.println(s);

}
}catch(Exception e){
e.printStackTrace();
}finally{
//关闭必须在这里执行,是因为,这里的代码是必须运行的
try{
fis.close();
}catch(IOException e){
e.printStackTrace();
}
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
IoTest2 io = new IoTest2();

}


}





4、

往文件中写入内容

//FileOutputStream使用
package net.test2;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;


public class IoTest3 {
FileOutputStream fos = null;
public IoTest3(){

File f = new File("E:\\ss.txt");
try{
fos = new FileOutputStream(f);
String s = "hello world";
String s1 = "你好";

//定义字节数组
byte[] bytes = new byte[1024];

//如何把String转化成为bytes数组
fos.write(s.getBytes());
fos.write(s.getBytes());

}catch(Exception e){
e.printStackTrace();

}finally{
try{
fos.close();
}catch(IOException e){
e.printStackTrace();

}
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
IoTest3 io = new IoTest3();


}


}


5、像文件中写入图片

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class IoTest5 {
public void IoTest5()
{
      //先把图片加入到内存——》写入某个文件
        //因为是二进制文件,只能用字节流完成
FileInputStream fis=null;
// 输出流
FileOutputStream fos=null;
try {
 fis=new FileInputStream("e:/照片/12.jpg");
 fos=new FileOutputStream("d:/12.jpg");
 
 //用byte存储二进制文件,,byte数组相当于缓存
byte buf[]=new byte[1024];
int n=1024; //记录事迹读取到的字节数
 //循环读取

while((fis.read(buf))!=-1)
{
 //输出到指定文件夹
 fos.write(buf);
 
}
 
 
 
} catch (Exception e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
}finally
{
 try {
 fis.close();
} catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();

}

 

}
}




6、//演示缓存字符流

public class IoTest6 {

 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
BufferedReader br=null;
BufferedWriter bw=null;  

try {
 FileReader fr = new FileReader("d:/test.txt");
  br=new BufferedReader(fr);
  FileWriter fw=new FileWriter("d:/test1.txt");
  bw= new BufferedWriter(fw);
 //循环读取文件
 String s="";
 while((s=br.readLine())!=null)
 {
//  System.out.println(s);
  bw.write(s+"\r\n");
 }
 
} catch (Exception e) {
 // TODO: handle exception
}
finally{
 try {
  bw.close();
  br.close();
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }

 

}
}
 

}


编程中的文件流

标签:

原文地址:http://blog.csdn.net/u012965373/article/details/43940137

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!