java--File的读取和写入实例
2013-10-10 14:48
393 查看
实例来源think in java
实例1
使用BufferReader读取。
实例2
使用StringReader类读取,in.read()以int形式返回下一个字节。
实例3
使用DataInputStream类读取,in.readByte()返回的byte类型。
另一种用法,差异在第9行,使用in.available() != 0,判断检测字节是否结束。
FormattedMemoryInput例子在运行时 不能检测流中是否还有字节,所以在控制台最后会抛出一个异常:End of stream
下面用法可以避免此问题。
写:
实例1
基本的文件写入
快捷用法,PrintWriter提供了进行缓存操作构造函数,省去了我们自己进行包装。
读取和写入工具类
读取:
根据需要读取文件返回不同类型的信息进行选择使用。实例1
使用BufferReader读取。
package io; // 使用Reader方式进行读取 import java.io.*; public class BufferedInputFile { // Throw exceptions to console: public static String read(String filename) throws IOException { // 使用BufferedReader进行缓冲,来提高文件的读取数据 BufferedReader in = new BufferedReader(new FileReader(filename)); String s; StringBuilder sb = new StringBuilder(); while ((s = in.readLine()) != null) sb.append(s + "\n"); in.close(); return sb.toString(); } public static void main(String[] args) throws IOException { System.out.print(read("C:\\Users\\zm\\workspace\\Thinking in java\\src\\io\\BufferedInputFile.java")); } }
实例2
使用StringReader类读取,in.read()以int形式返回下一个字节。
package io; // 从内存中读取 import java.io.*; public class MemoryInput { public static void main(String[] args) throws IOException { StringReader in = new StringReader(BufferedInputFile .read("C:\\Users\\zm\\workspace\\Thinking in java\\src\\io\\MemoryInput.java")); int c; while ((c = in.read()) != -1) System.out.print((char) c); } }
实例3
使用DataInputStream类读取,in.readByte()返回的byte类型。
package io; //相对TestEOF.java 此方法不能检测字节是否结束 //面向字节的IO类 import java.io.*; public class FormattedMemoryInput { public static void main(String[] args) throws IOException { try { DataInputStream in = new DataInputStream( new ByteArrayInputStream(BufferedInputFile .read("C:\\Users\\zm\\workspace\\Thinking in java\\src\\io\\FormattedMemoryInput.java") .getBytes())); while (true) System.out.print((char) in.readByte()); } catch (EOFException e) { System.err.println("End of stream"); } } }
另一种用法,差异在第9行,使用in.available() != 0,判断检测字节是否结束。
FormattedMemoryInput例子在运行时 不能检测流中是否还有字节,所以在控制台最后会抛出一个异常:End of stream
下面用法可以避免此问题。
package io; import java.io.*; public class TestEOF { public static void main(String[] args) throws IOException { DataInputStream in = new DataInputStream(new BufferedInputStream( new FileInputStream("C:\\Users\\zm\\workspace\\Thinking in java\\src\\io\\TestEOF.java"))); while (in.available() != 0) System.out.print((char) in.readByte()); } }
写:
基本的文件写入
package io; // 基本的文件输出 import java.io.*; public class BasicFileOutput { static String file = "C:\\Users\\zm\\workspace\\Thinking in java\\src\\io\\BasicFileOutput.out"; public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader( new StringReader( BufferedInputFile.read("C:\\Users\\zm\\workspace\\Thinking in java\\src\\io\\BasicFileOutput.java"))); PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter( file))); int lineCount = 1; String s; while ((s = in.readLine()) != null) out.println(lineCount++ + ": " + s); out.close(); // Show the stored file: System.out.println(BufferedInputFile.read(file)); } }
快捷用法,PrintWriter提供了进行缓存操作构造函数,省去了我们自己进行包装。
package io; // 输出方式的快捷用法,PrintWriter提供了进行缓存操作构造函数 import java.io.*; public class FileOutputShortcut { static String file = "C:\\Users\\zm\\workspace\\Thinking in java\\src\\io\\FileOutputShortcut.out"; public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new StringReader( BufferedInputFile.read("C:\\Users\\zm\\workspace\\Thinking in java\\src\\io\\FileOutputShortcut.java"))); // Here's the shortcut: PrintWriter out = new PrintWriter(file); int lineCount = 1; String s; while ((s = in.readLine()) != null) out.println(lineCount++ + ": " + s); out.close(); // Show the stored file: System.out.println(BufferedInputFile.read(file)); } }
读取和写入工具类
//: net/mindview/util/TextFile.java // Static functions for reading and writing text files as // a single string, and treating a file as an ArrayList. package net.mindview.util; import java.io.*; import java.util.*; public class TextFile extends ArrayList<String> { private static String gpfile = "C:\\Users\\zm\\workspace\\Thinking in java\\src\\net\\mindview\\util\\"; // Read a file as a single string: public static String read(String fileName) { StringBuilder sb = new StringBuilder(); try { BufferedReader in = new BufferedReader(new FileReader(new File( fileName).getAbsoluteFile())); try { String s; while ((s = in.readLine()) != null) { sb.append(s); sb.append("\n"); } } finally { in.close(); } } catch (IOException e) { throw new RuntimeException(e); } return sb.toString(); } // Write a single file in one method call: public static void write(String fileName, String text) { try { PrintWriter out = new PrintWriter(new File(fileName) .getAbsoluteFile()); try { out.print(text); } finally { out.close(); } } catch (IOException e) { throw new RuntimeException(e); } } // Read a file, split by any regular expression: public TextFile(String fileName, String splitter) { super(Arrays.asList(read(fileName).split(splitter))); // Regular expression split() often leaves an empty // String at the first position: if (get(0).equals("")) remove(0); } // Normally read by lines: public TextFile(String fileName) { this(fileName, "\n"); } public void write(String fileName) { try { PrintWriter out = new PrintWriter(new File(fileName) .getAbsoluteFile()); try { for (String item : this) out.println(item); } finally { out.close(); } } catch (IOException e) { throw new RuntimeException(e); } } // Simple test: public static void main(String[] args) { String file = read(gpfile + "TextFile.java"); write("d:\\test.txt", file); TextFile text = new TextFile("d:\\test.txt"); text.write("d:\\test2.txt"); // Break into unique sorted list of words: TreeSet<String> words = new TreeSet<String>(new TextFile( gpfile + "TextFile.java", "\\W+")); // Display the capitalized words: System.out.println(words.headSet("a")); } }
相关文章推荐
- java file to inputstream以及New Document From InputStream读取和写入文件操作实例代码
- Java按行读取正在被动态写入的大文件实例--使用RandomAccessFile(1)
- Java中IO流文件读取、写入和复制的实例
- Java 是如何读取和写入浏览器Cookies的实例详解
- java 实现txt文件读取,写入操作实例代码。
- java学习_File简单的txt读取写入
- java读取文件和写入文件的方式(简单实例)
- java下radomAccessFile文件写入读取
- java IO RandomAccessFile的写入和随机读取
- asp OpenTextFile文本读取与写入实例代码
- Java file文件的写入和读取及下载
- asp OpenTextFile文本读取与写入实例代码
- Java 使用DataInputStream将数据写入文件,使用FileReader读取演示
- java通过InputStream读取和写入文件操作实例代码
- [hadoop2.7.1]I/O之SequenceFile最新API编程实例(写入、读取)
- 用JAVA写入和读取MYSQL的图片的实例
- java.io.File写入写出的一个简单实例
- Java按行读取正在被动态写入的大文件实例--使用BufferedInputStream(2)
- Java读取txt文件和写入txt文件的简单实例
- Java RandomAccessFile 指定位置实现文件读取与写入