java读写各类型文件操作总结
2018-04-09 16:47
525 查看
读文件操作
单字节读取文本public class readFile { public static void readfile(String file){ try{ FileReader fr = new FileReader(file); int ch = 0; while((ch=fr.read())!=-1){//fr.read()读取一个字节,判断此字节的值为-1表示读到文件末尾了。 System.out.println((char)ch); } }catch(IOException e){ e.printStackTrace(); } } public static void main(String[] args) { readfile("e:\\dd.txt"); } }
逐行读取文本
public class ReadLine { public static String readline(File file) { StringBuilder sb = new StringBuilder(); String encoding = "UTF-8"; if (file.exists() && file.isFile()) { FileInputStream fi = null; InputStreamReader read = null; try { fi = new FileInputStream(file); read = new InputStreamReader(fi, encoding); BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) { sb.append(lineTxt.trim()); } } catch (Exception e) { log.error("read file error", e); } finally { IOUtils.closeQuietly(bufferedReader); IOUtils.closeQuietly(read); IOUtils.closeQuietly(fi); } } else { log.warn("can not find file:" + file.getAbsolutePath()); } return sb.toString(); } }
写文件操作
FileWriter类FileWriter类专门用来写字符到文本文件中。
[构造方法]
1)public FileWriter(String fileName):此构造方法的参数是文件名。文件名可以是相对路径,也可以绝对路径。此构造方法构造的对象,往文件写数据时,会擦除文件内原始内容,从头开始写数据。
2)public FileWriter(String fileName, boolean append):此构造方法要求两个参数,第一个单数fileName表示文件名,第二个参数append为true表示所写的新字符追加到文件原始内容之后,为fasle表示擦除文件的原始内容,从新开始写数据.
3)FileWriter(File file):根据给定的 File 对象构造一个 FileWriter 对象。
4)FileWriter(File file, boolean append):根据给定的 File 对象构造一个 FileWriter 对象。
5)FileWriter(FileDescriptor fd):构造与某个文件描述符相关联的 FileWriter 对象。
[注意事项]
1)FileWriter类只能用来写字符流到文件中,如果要写原始字节到文件,需要使用FileOutputStream类。
2)FileWriter类将字符串按照默认的字符编码格式进行编码写到文件,缓冲区也是默认大小。如果要指定编码方式和缓冲区大小,需要使用FileOutputStream类。
3)文件是否可用或是否可以被创建取决于底层平台。特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
9 public static void writeTest1(){ 10 try { 11 FileWriter fw = new FileWriter("E:/test.txt"); 12 fw.write("Mike Mike@163.com"); 13 fw.write("John John@163.com"); 14 fw.close(); 15 }catch (IOException e) { 16 e.printStackTrace(); 17 } 18 }
第11句:创建一个FileWriter对象fw,此对象与文件“E:\test.txt”关联。此构造方法创建的fw对象,写文件时会覆盖原有内容。如果要在原有文件上追加内容而不删除原有内容,应调用FileWriter的构造方法FileWriter(String fileName,boolean append),
第12句:向文件中写入一个字符串“Mike Mike@163.com”
第13句:向文件中写入一个字符串“John John@163.com”
第14句:关闭fw对象。文件作为一种资源,打开后要关闭,否则会长期占据文件资源,会导致意料不到的问题。
可见,所有内容写到了同一行内。如果需要换行的话,请继续往下看。
30 public static void writeTestByLine() { 31 // 方法一:获取系统的分行符号,在每次写入文本后,再写入一次分行符号 32 String str = System.getProperty("line.separator"); 33 try { 34 FileWriter fw = new FileWriter("E:/test2.txt"); 35 fw.write("Mike Mike@163.com"); 36 fw.write(str);//增加换行符 37 fw.write("John John@163.com"); 38 fw.write(str);//增加换行符 39 fw.write("Jane Jane@163.com"); 40 fw.close(); 41 } catch (IOException e) { 42 e.printStackTrace(); 43 } 44 } 45 }
BufferedWriter类
4000
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
【主要方法】
void write(char ch);//写入单个字符。
void write(char []cbuf,int off,int len)//写入字符数据的某一部分。
void write(String s,int off,int len)//写入字符串的某一部分。
void newLine()//写入一个行分隔符。
void flush();//刷新该流中的缓冲。将缓冲数据写到目的文件中去。
void close();//关闭此流,再关闭前会先刷新他。
【构造方法】
1)public BufferedWriter(Writer out):创建一个默认缓冲区大小的字符输出流对象。参数out是一个输出流对象,如FileWriter对象。
2)public BufferedWriter(Writer out, int sz) :创建一个指定缓冲区大小的字符输出流对象。参数out是一个输出流对象,如FileWriter对象。参数sz表示缓冲区大小,正整数。
public static void bufferedWriterTest(){ try{ BufferedWriter bw = new BufferedWriter(new FileWriter("E:/test3.txt")); bw.write("第一行"); bw.newLine(); bw.write("第二行"); bw.newLine(); bw.write("第三行"); bw.close(); }catch(IOException e){ e.printStackTrace(); } }
【注意】
1)可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。
2)该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 (‘\n’) 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。
3)通常FileWriter 将其输出立即发送到底层字符或字节流,对于频繁输出内容的情况,会导致开销较高。这种情况下用 BufferedWriter 包装靠小较高的 FileWriters会提高性能。例如, PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(“foo.out”))); 将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用out. print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。
相关文章推荐
- java IO总结之字节流操作文件读写(高效)
- java IO总结之字符流操作文件读写
- java IO总结之字节流操作文件读写
- java IO总结之字符流操作文件读写(高效)
- 关于java下的明确编码方式的文件读写操作总结
- 自己总结的Java实现文件的读写操作
- C++ 的各种文件读写操作总结 [转载]
- 用JAVA源代码实现文件的读写操作.
- C++ builder 的文件读写操作总结
- C_C++文件读写操作总结
- C/C++ 文件读写操作总结
- java对excel文件的读写操作,这次是丰富的属性设置
- JAVA 中对文件的读写操作
- Java 中对文件的读写操作之比较
- 经验总结java利用jacob操作word文件
- java对excel文件的读写操作
- 入门:Java 中对文件的读写操作之比较
- Java 中对文件的读写操作之比较
- Java中各种文件类型操作的代码与详细文件IO讲解
- C++ builder 的文件读写操作总结