在Java中,文件读取主要有两种方式:字节流和字符流。其中,字节流可以读取任意类型的文件,而字符流只能读取文本文件。
下面介绍一下如何使用字节流读取文件:
import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class ReadFile { public static void main(String[] args) { File file = new File("/path/to/file"); FileInputStream fis = null; try { fis = new FileInputStream(file); byte[] data = new byte[(int) file.length()]; fis.read(data); String result = new String(data); System.out.println(result); } catch (IOException e) { e.printStackTrace(); } finally { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } }
上述代码中,先通过File类指定要读取的文件路径,然后使用FileInputStream类读取文件,最后将字节流转换为字符串输出。
如果要使用字符流读取文本文件,可以使用FileReader类或BufferedReader类。下面是使用BufferedReader类读取文件的示例:
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class ReadFile { public static void main(String[] args) { File file = new File("/path/to/file"); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } }
上述代码中,先通过File类指定要读取的文件路径,然后使用BufferedReader类读取文件,最后逐行输出。
文件写入也分为字节流和字符流。下面介绍一下如何使用字节流写入文件:
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class WriteFile { public static void main(String[] args) { File file = new File("/path/to/file"); FileOutputStream fos = null; try { fos = new FileOutputStream(file); String data = "Hello, World!"; fos.write(data.getBytes()); } catch (IOException e) { e.printStackTrace(); } finally { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
上述代码中,先通过File类指定要写入的文件路径,然后使用FileOutputStream类写入文件。
如果要使用字符流写入文本文件,可以使用FileWriter类或BufferedWriter类。下面是使用BufferedWriter类写入文件的示例:
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class WriteFile { public static void main(String[] args) { File file = new File("/path/to/file"); BufferedWriter writer = null; try { writer = new BufferedWriter(new FileWriter(file)); writer.write("Hello, World!"); } catch (IOException e) { e.printStackTrace(); } finally { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }
上述代码中,先通过File类指定要写入的文件路径,然后使用BufferedWriter类写入文件。
文件复制也可以使用字节流和字符流。下面介绍一下如何使用字节流复制文件:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyFile { public static void main(String[] args) { File source = new File("/path/to/source"); File target = new File("/path/to/target"); FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(source); fos = new FileOutputStream(target); byte[] data = new byte[(int) source.length()]; fis.read(data); fos.write(data); } catch (IOException e) { e.printStackTrace(); } finally { try { fis.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
上述代码中,先通过File类指定要复制的源文件路径和目标文件路径,然后使用FileInputStream类读取源文件,FileOutputStream类写入目标文件。
如果要使用字符流复制文本文件,可以使用BufferedReader类和BufferedWriter类。下面是使用BufferedReader类和BufferedWriter类复制文件的示例:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyFile { public static void main(String[] args) { File source = new File("/path/to/source"); File target = new File("/path/to/target"); BufferedReader reader = null; BufferedWriter writer = null; try { reader = new BufferedReader(new FileReader(source)); writer = new BufferedWriter(new FileWriter(target)); String line = null; while ((line = reader.readLine()) != null) { writer.write(line); writer.newLine(); } } catch (IOException e) { e.printStackTrace(); } finally { try { reader.close(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }
上述代码中,先通过File类指定要复制的源文件路径和目标文件路径,然后使用BufferedReader类读取源文件,BufferedWriter类写入目标文件。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com