当前位置:编程学习 > JAVA >>

java--File的读取和写入实例

实例来源think in java
 
读取:
 
根据需要读取文件返回不同类型的信息进行选择使用。
实例1
使用BufferReader读取。
[java]  
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形式返回下一个字节。
[java]  
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类型。
[java]  
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
下面用法可以避免此问题。
[java]  
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());  
    }  
}  
 
 
写:
 
实例1
基本的文件写入
[java] 
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提供了进行缓存操作构造函数,省去了我们自己进行包装。
[java]  
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; &
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,