package com.file.test; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; /** * @date 2015-3-17 7:52:06 * @author y * @desc */ public class FileTest { /** * 通过 BufferedReader 读取文本文件 * 使用此种方式进进行读取文件,将会忽略回车换行等字符 * 读取中文推荐此种方式 * @param fileName */ public static void readFileByBufferedReader(String fileName){ FileReader fr = null; BufferedReader br = null; StringBuilder sb = new StringBuilder(); try { fr = new FileReader(fileName); br = new BufferedReader(fr); String line; while((line=br.readLine())!=null){ sb.append(line); } System.out.println("str:"+sb.toString()); System.out.println("str.length:"+sb.length()); } catch (FileNotFoundException ex) { Logger.getLogger(FileTest.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(FileTest.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { if(null!=br){ br.close(); } if(null!=fr){ fr.close(); } } catch (IOException ex) { Logger.getLogger(FileTest.class.getName()).log(Level.SEVERE, null, ex); } } } /** * 通过 BufferedInputStream 读取文件 * 此种方式存在中文乱码问题,关键点在这里: * byte buffer[]=new byte[1024]; 有可能中文被读取了半个字节 * 使用ByteArrayOutputStream解决中文乱码问题 * @param fileName */ public static void readFileByBufferedInputStream(String fileName){ File file = new File(fileName); FileInputStream fis = null; BufferedInputStream bis = null; ByteArrayOutputStream baos = null; StringBuilder sb = new StringBuilder(); try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); baos = new ByteArrayOutputStream(); byte buffer[]=new byte[2]; int b; while((b=bis.read(buffer))>0){ baos.write(buffer, 0, b); } sb.append(baos.toString()); System.out.println("str:"+sb.toString()); System.out.println("str.length:"+sb.length()); } catch (FileNotFoundException ex) { Logger.getLogger(FileTest.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(FileTest.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { if(null!=baos){ baos.close(); } if(null!=bis){ bis.close(); } if(null!=fis){ fis.close(); } } catch (IOException ex) { Logger.getLogger(FileTest.class.getName()).log(Level.SEVERE, null, ex); } } } /** * 创建文件 * @param fileName */ public static void createFile(String fileName){ try { File file = new File(fileName); if(!file.exists()){ file.createNewFile(); System.out.println("文件创建成功"); }else{ System.out.println("文件已经存在"); } } catch (IOException ex) { Logger.getLogger(FileTest.class.getName()).log(Level.SEVERE, null, ex); } } }