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
- 【IO流】IO框架
- IO流呀IO流
- 字符IO&数据流IO&对象流IO
- io流
- io流
- IO流
- IO流
- IO 流
- IO流
- io流
- IO流
- io流
- IO流
- IO流
- IO流
- IO流
- IO流
- IO流
- MPAndroidChart MarkerView的精确点击问题解决方案
- C++插入及取出队列数据可以任意修改设定的队列长度
- Java Web入门必知
- okhttp框架解析与应用
- JAVA的23种设计模式---代理模式(一)
- io流
- 标准C语言头文件
- Linux性能调优之I/O调优
- C++链式栈的模版
- Java 8 Stream 原理
- 让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean
- H264基础概念
- spring集成CXF服务端
- 利用Java反射根据属性名获取对象值和类型代码