package com.kale.io;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; /**
* @author:Jack Tony
* @date :2014-10-12
*/
public class IOTest { public static void main(String[] args) {
//String str = byteRead();
//byteWrite(str); //String readStr = fileReader();
//fileWriter(readStr); //readerWriter(); //bufferedReader();
} /**
* 字节流写入
* @param result
*/
public static void byteWrite(String result) {
FileOutputStream fos = null;
try {
//将字符串写入到硬盘的一个文件中,这里请确保文件存在
File file = new File("d:/to.txt");
if(!file.exists()) {
file.createNewFile();
}
//通过文件来建立流
fos = new FileOutputStream(file);
//将字符串转换为byte数组,一次性写入
fos.write(result.getBytes()); } catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally {
try {
fos.flush();
fos.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} }
} /**
* 字节流读出
* @return
*/
public static String byteRead() {
FileInputStream fis = null;
//存放读取结果的String对象
String result = "";
try {
//通过文件来建立一个流,文件不存在则出现异常
fis = new FileInputStream(new File("d:/from.txt"));
//fis读取必须要用到byte[],所以要建立一个byte来存放字节流。这样就可以从文件中一点点读取了
byte []buffer = new byte[1024*3];
//每次读取字节的实际数目
int n = 0;
//每次读取一个buffer长度,存到buffer中,直到没有读取到字节
while((n = fis.read(buffer, 0, buffer.length)) > 0) {
result += new String(buffer,0,n);
}
System.out.println("【"+result.trim()+"】"); } catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally {
try {
fis.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
return result;
} /**
* 通过fileReader来进行读取字符流
* @return
*/
public static String fileReader() {
String result = "";
FileReader fr = null;
try {
fr = new FileReader(new File("d:/reader.txt"));
//通过这个数组来做缓冲区,一点一点的读入到程序中
char []c = new char[2];
//实际读取的字符个数
int n = 0;
//循环读取,直到文件的末尾
while((n = fr.read(c)) != -1) {
result += new String(c,0,n);
}
System.out.println("【"+result+"】");
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally {
try {
fr.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
return result;
} /**
* 将字符流写入到文件中
* @param str
*/
public static void fileWriter(String str) {
FileWriter fw = null;
try {
fw = new FileWriter(new File("d:/writer.txt"));
//将字符串一次性的写入到文件中
fw.write(str);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally {
try {
fw.flush();
fw.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} }
} /**
* 一点一点读,并且将读出来的东西写入到另一个文件中
*/
public static void readerWriter() {
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader(new File("d:/reader.txt"));
//第二个参数为true时,表示追加写入
fw = new FileWriter(new File("d:/writer.txt"),true);
//建立缓冲区
char []c = new char[2];
//实际读取的字符的个数
int n = 0;
//一点一点读出字符,放到char数组中,直到末尾
while((n = fr.read(c)) != -1) {
//将char数组中的字符写入文件中
fw.write(c, 0, n);
}
System.out.println("写入成功!");
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally {
try {
fw.flush();
fw.close();
fr.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
} /**
* 通过BufferedReader来一行一行读取
* @return 如果正常则返回字符串,如果出错返回null
*/
public static String bufferedReader() {
String result = null;
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader("d:/reader.txt");
//将File进行包装,可以一行一行的读取了
br = new BufferedReader(fr);
String line = null;//定义读取一行字符后存储的String对象
//用这个来暂时存放string对象
StringBuilder sb = new StringBuilder("");
//一行一行读取,读取的东西每次存放到line中
while((line = br.readLine()) != null){
//result += line;
sb.append(line);//将读取的每一行补到StringBuilder后面
}
result = sb.toString().trim();
System.out.println("【"+result+"】");
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally {
try {
br.close();
fr.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
return result;
} }

Java中IO的简单举例的更多相关文章

  1. java中数据流的简单介绍

    java中的I/O操作主要是基于数据流进行操作的,数据流表示了字符或者字节的流动序列. java.io是数据流操作的主要软件包 java.nio是对块传输进行的支持 数据流基本概念 “流是磁盘或其它外 ...

  2. JAVA中IO总结

    JAVA中IO流主要分为两大类: 字节流:InputStream+OutputStream 字符流:Reader+Writer 字节流: InputStream是所有字节输入流的父类 OutputSt ...

  3. Java中IO流的总结

    有关Java中IO流总结图 流分类 按方向分 输入流 输出流 按单位分 字节流 字符流 按功能分 节点流 处理流(过滤流) 其他 所有的流继承与这四类流:InputSteam.OutputStream ...

  4. 多线程(三) java中线程的简单使用

    java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依 ...

  5. java 中 IO 流分为几种?(未完成)

    java 中 IO 流分为几种?(未完成)

  6. JAVA中IO流总结

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42119261 我想你对JAVA的IO流有所了解,平时使用的 ...

  7. JAVA中IO技术:BIO、NIO、AIO

    1.同步异步.阻塞非阻塞概念        同步和异步是针对应用程序和内核的交互而言的. 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作 ...

  8. JAVA中IO和NIO的详解分析,内容来自网络和自己总结

    用一个例子来阐释: 一辆客车上有10个乘客,他们的目的地各不相同,当没有售票员的时候,司机就需要不断的询问每一站是否有乘客需要下车,需要则停下,不需要则继续开车,这种就是阻塞的方式. 当有售票员的时候 ...

  9. Java中IO流中的装饰设计模式(BufferReader的原理)

    本文粗略的介绍下JavaIO的整体框架,重在解释BufferReader/BufferWriter的演变过程和原理(对应的设计模式) 一.JavaIO的简介 流按操作数据分为两种:字节流与字符流. 流 ...

随机推荐

  1. poj 1611 求0号结点所在集合的元素个数

    求0号结点所在集合的元素个数 Sample Input 100 42 1 25 10 13 11 12 142 0 12 99 2200 21 55 1 2 3 4 51 00 0Sample Out ...

  2. 2018年湘潭大学程序设计竞赛 F - maze

    把点抽出来 跑个最短路就好啦. #include<bits/stdc++.h> #define LL long long #define pii pair<int,int> # ...

  3. zabbix3.4+grafana5.0.1数据可视化

    转自:https://blog.csdn.net/xiaoying5191/article/details/79530280

  4. Eclipse设置之:代码注释/server 控制台输出乱码解决

    1           Eclipse设置 Configure clean up style The location is here: And the configuration should fo ...

  5. 捕获程序异常之tryCatch

    一.try catch语法try…catch…finally…语法中除了try以外,catch和finally都是可选的(两者必须要有一个),也就是说try…catch…finally…语法有以下三种 ...

  6. BZOJ.1031.[JSOI2007]字符加密(后缀数组)

    题目链接 环可以拆成链:对字符串排序能想到后缀数组. 完了.输出时忽略长度不足n的串,输出s[sa[i]+n-1],即排名为i的字符串的末尾. //4140kb 744ms #include < ...

  7. Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem C. Cargo Transportation 暴力

    Problem C. Cargo Transportation 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed ...

  8. UVALive 6907 Body Building tarjan

    Body Building 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8 ...

  9. iOS图片设置圆角性能优化

    问题 圆角虽好,但如果使用不当,它就是你的帧数杀手,特别当它出现在滚动列表的时候.下面来看圆角如何毁掉你的流畅度的. 实测 layer.cornerRadius 我创建了一个简单地UITableVie ...

  10. FireDAC 下的 Sqlite [3] - 获取数据库的基本信息

    在空白窗体上添加: TFDConnection, TFDPhysSQLiteDriverLink, TFDGUIxWaitCursor, TMemo procedure TForm1.FormCrea ...