java用流读写文件
2015-06-09 17:34
281 查看
示例代码: package edu.thu.keyword.test; import java.io.File; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileWriter; public class cin_txt { static void main(String args[]) { try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw /* 读入TXT文件 */ String pathname = "D:\\twitter\\13_9_6\\dataset\\en\\input.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径 File filename = new File(pathname); // 要读取以上路径的input。txt文件 InputStreamReader reader = new InputStreamReader( new FileInputStream(filename)); // 建立一个输入流对象reader BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言 String line = ""; line = br.readLine(); while (line != null) { line = br.readLine(); // 一次读入一行数据 } /* 写入Txt文件 */ File writename = new File(".\\result\\en\\output.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件 writename.createNewFile(); // 创建新文件 BufferedWriter out = new BufferedWriter(new FileWriter(writename)); out.write("我会写入文件啦\r\n"); // \r\n即为换行 out.flush(); // 把缓存区内容压入文件 out.close(); // 最后记得关闭文件 } catch (Exception e) { e.printStackTrace(); } } }
首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。 通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西 既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据 解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。 package com.campu; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.Reader; public class H20121012 { /** * 功能:Java读取txt文件的内容 * 步骤:1:先获得文件句柄 * 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取 * 3:读取到输入流后,需要读取生成字节流 * 4:一行一行的输出。readline()。 * 备注:需要考虑的是异常情况 * @param filePath */ public static void readTxtFile(String filePath){ try { String encoding="GBK"; File file=new File(filePath); if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file),encoding);//考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while((lineTxt = bufferedReader.readLine()) != null){ System.out.println(lineTxt); } read.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } } public static void main(String argv[]){ String filePath = "L:\\Apache\\htdocs\\res\\20121012.txt"; // "res/"; readTxtFile(filePath); } }
/** * 读取指定文件的文本内容,返回文本值是一个长串,原文本中的换行不会被读入 * @param fileName 文件名称 * @return */ public static String read(String fileName,String charSet){ if(fileName==null||"".equals(fileName)){ System.out.println("文件名称为空..."); return ""; } //设置字符编码 if(StringUtil.isEmpty(charSet)){ charSet = "UTF-8"; } File file = new File(fileName); FileInputStream fin = null; StringBuffer buffer = new StringBuffer(); try { fin = new FileInputStream(file); BufferedReader reader = new BufferedReader(new InputStreamReader(fin,charSet)); String content = reader.readLine(); while(content!=null){ buffer.append(content); //循环读取下一行,没有这行代码就是死循环的啦。。。 content = reader.readLine(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(fin!=null){ try { fin.close(); } catch (IOException e) { e.printStackTrace(); } } } return buffer.toString(); }
相关文章推荐
- Java foreach语句
- Java最佳实战
- Myeclipse常用快捷键
- spring 第一篇(1-3):鸟瞰spring蓝图
- java线程池ThreadPoolExecutor 如何与 AsyncTask() 组合使用
- java线程池ThreadPoolExecutor 如何与 AsyncTask() 组合使用
- java线程池ThreadPoolExecutor 如何与 AsyncTask() 组合使用
- Java .class文件是什么?
- 《深入理解Java虚拟机》学习小记一之自动内存管理机制(三)
- 《深入理解Java虚拟机》学习小记一之自动内存管理机制(二)
- java final keyword
- Java for LeetCode 209 Minimum Size Subarray Sum
- Swig编译C代码供java调用实例
- Spring中使用Hessian暴露服务
- 《深入理解Java虚拟机》学习小记一之自动内存管理机制(一)
- java.net.SocketException: select failed
- JavaBean 中的属性详解(实例)
- java json字符串解析--遇到的问题
- JAVA创建对象有哪几种方式
- 让我苦苦寻找的那段代码---springmvc的ajax前后台交互