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;
} }

最新文章

  1. 将 Tor socks 转换成 http 代理
  2. Android,LIstView中的OnItemClick点击无效的解决办法
  3. iOS开发中常用到的宏定义
  4. 关于php析构函数的一个有趣问题
  5. 使用jquery再次封装ajax
  6. VS模板文件修改,自动生成注释
  7. LVS与其他负载均衡软件的区别
  8. C# 中的委托和事件详解
  9. Android开发者指南-用户界面-拖放-Drag and Drop[原创译文]
  10. MVC验证10-到底用哪种方式实现客户端服务端双重异步验证
  11. gitlab+jenkins持续集成(一)
  12. 论述Redis和Memcached的差异
  13. lightoj 1025 区间dp
  14. j2EE经典面试题
  15. Leetcode:0027
  16. BZOJ 1996: [Hnoi2010]chorus 合唱队(区间dp)
  17. unity 中的UGUI 屏蔽鼠标穿透
  18. Oracle 12C -- truncate的级联操作
  19. 3The superclass “javax.servlet.http.HttpServlet" was not found on the Java Build Path 之一
  20. django的Session-10

热门文章

  1. 使用VS2013、TFS2013和Git进行分布式团队协作
  2. 003.LVM扩容
  3. 005.FTP本地用户访问
  4. 纯CSS3实现蜡烛(冒烟)效果
  5. AngularJS之jeDate日期控件基本使用
  6. Android-多进程初识
  7. python django + js 使用ajax进行文件上传并获取上传进度案例
  8. UVA.1640.The Counting Problem / BZOJ.1833.[ZJOI2010]数字计数(数位DP)
  9. Xtreme9.0 - Pattern 3 KMP
  10. redis 写磁盘出错 Can’t save in background: fork: Cannot allocate memory (转)