io流

来源:互联网 发布:ipad图片分类软件 编辑:程序博客网 时间:2024/06/06 04:29

写文本文件:

import java.io.*;/* * 写入到C盘hui目录下的一个文本文件,并往里写入若干行文字。 *如果该次磁盘下有重复的内容,则删除重复的内容后再写入一个新的内容。 */public class TestWriteText{public static void main(String[] args){  //创建一个File的实例对象  File file=new File("C:\\Users\\huiqiang\\Desktop\\hui");  //判断file是否存在,不存在就创建出一个文件目录  if(!file.exists()){   file.mkdirs();   System.out.println("该目录不存在,已创建");  }  File file1=new File(file,"lian.txt");  //判断file1是否存在,不存在就创建出一个文件  if(!file1.exists()){   file.mkdirs();   System.out.println("该文件不存在,已创建");  }//在main方法中声明抛出IO异常。//定义写入路径的字符串。String fileName ="C:\\Users\\huiqiang\\Desktop\\hui\\lian.txt";try{//使用面向字符流的FileWriter类。//直接调用构造方法,传递写入路径。FileWriter类的构造方法有五个。FileWriter writer1 = new FileWriter(fileName);//相当于在FileWriter类上再套上一层管道。如果要写入的内容更多,就应该用高效的缓冲流类:BufferedWriter.与FileWriter不同是多个了newLine()方法用于换行。BufferedWriter writer = new BufferedWriter(writer1);//FileWriter类的Write()方法向文件中写入字符。writer.write("a1.sources = r1\n");writer.write("a1.sinks = k1\n");writer.write("a1.channels = c1\n");writer.write("\n");writer.write("a1.sources.r1.type = exec\n");writer.write("a1.sources.r1.command = tail -F /home/hadoop/messages\n");writer.write("a1.sources.r1.port = 44444\n");writer.write("a1.sources.r1.host = 192.168.8.71\n");writer.write("a1.sources.r1.channels = c1\n");writer.newLine();writer.write("a1.sinks.k1.type = logger\n");writer.write("a1.sinks.k1.type = hbase\n");writer.write("a1.sinks.k1.table = messages\n");writer.write("a1.sinks.k1.columnFamily = cf\n");writer.write("a1.sinks.k1.serializer = com.tcloud.flume.AsyncHbaseLogEventSerializer\n");writer.write("a1.sinks.k1.channel = memoryChannel\n");writer.newLine();writer.write("a1.channels.c1.type = memory\n");writer.write("a1.channels.c1.capacity = 1000\n");writer.write("a1.channels.c1.transactionCapacity = 100\n");writer.write("\n");writer.write("a1.sources.r1.channels = c1\n");writer.write("a1.sinks.k1.channel = c1");//清空流里的内容并关闭它,如果不调用该方法还没有完成所有数据的写操作,程序就结束了。writer.close();}catch(IOException iox){System.out.println("Problemwriting" + fileName);}}}


读文本文件:
import java.io.*;/* * 从C盘的lian.txt中读出文件中的数据到命令行中。 * */public class TestBufferedReader{public static void main(String[] args){//在main方法中声明抛出IO异常。//定义写入路径的字符串。String fileName ="C:\\Users\\huiqiang\\Desktop\\hui\\lian.txt";String line;try{// 利用BufferedReader套在FileReader,处理流套在节点流上。BufferedReader in = new BufferedReader(new FileReader(fileName));//首先读取一行的内容。line = in.readLine();//判断读写的内容是否为空。while(line!=null){//输出一行。System.out.println(line);//继续读出下一行的内容。line = in.readLine();}//关闭这个“管道”。in.close();} catch(IOException iox){System.out.println("Problemreading" + fileName);}}}



二进制文件:包含在ASCII及扩展ASCII字符中编写的数据或程序指令的文件。

计算机文件基本上分为二种:二进制文件和ASCII(也称纯文本文件),图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII则是可以用任何文字处理程序阅读的简单文本文件。

写二进制文件:

import java.io.*;/* * 用字节流写二进制文件。将三个int类型255 0 -1写入数据文件data.dat中。 * */public class TestDataOutputStream{public static void main(String[] args){//在main方法中声明抛出IO异常。//定义写入路径的字符串。String fileName ="C:\\Users\\huiqiang\\Desktop\\hui\\lian.txt";//定义三个变量。int value0 = 255;int value1 = 0;int value2 = -1; try{            //定义处理流和结点流。DataOutputStream out = new DataOutputStream(new FileOutputStream(fileName)); out.writeInt(value0);out.writeInt(value1);out.writeInt(value2);out.close();}catch(IOException iox){System.out.println("problemwriting" + fileName);}}}

这里列出在UltraEdit(UE)里看到的东西:



读二进制文件:

import java.io.*;public class TestDataInputStream{public static void main(String[] args){//在main方法中声明抛出IO异常。//定义写入路径的字符串。String fileName ="C:\\Users\\huiqiang\\Desktop\\hui\\lian.txt";int sum = 0;        try {          DataInputStream instr= new DataInputStream(          new BufferedInputStream(new FileInputStream(fileName)));          sum += instr.readInt();          sum += instr.readInt();          sum += instr.readInt();          System.out.println( "The sum is: " + sum );          instr.close();        }        catch ( IOException iox ) {        System.out.println("Problem reading " + fileName);        }    }}

运行结果:

The sum is: 254


当我们不知道是三个数据的时候,多读的话就会抛出EOFException异常,所以我们将读操作放在try中。
我们可以使用嵌套的trycatch块来对异常进行进一步的处理:

public class TestDataInputStream{  
    public static void main(String[] args){  
        String fileName ="C:\\Users\\huiqiang\\Desktop\\hui\\lian.txt";  
        int sum = 0;  
        try {  
            DataInputStream instr= new DataInputStream(new BufferedInputStream(new FileInputStream(fileName)));  
            try{
                while(true)  
                    sum += instr.readInt();    
            } catch(EOFException eof){  
                System.out.println( "The sum is: " + sum );    
                instr.close();  
            }

        }  
        catch ( IOException iox ) {  
        System.out.println("Problem reading " + fileName);  
        }  
    }  
}


注意:路径的写法

如果你是在Windows的myeclipse中运行程序的话要这样写"C:\\Users\\huiqiang\\Desktop\\hui\\lian.txt"

如果是在Linux中运行程序的话要这样写"/home/hadoop/hui/lian.txt"


参考:

http://blog.csdn.net/lovesummerforever/article/details/8811979

http://www.cnblogs.com/daoxiang1992/p/5759033.html

http://blog.csdn.net/rcoder/article/details/6112973