Java IO 之 写入文件

在企业应用程序上工作时,有时需要用Java编写文件,例如在文件系统中编写报告。尽管有多种方法可以做到这一点,但让我们快速浏览其中的几种方法以在需要时快速参考。

目录

使用BufferedWritter 
写文件使用FileWriter / PrintWriter 
写文件使用FileOutputStream 
写文件使用DataOutputStream 
写文件使用FileChannel 
写文件使用Java 7路径写文件

使用BufferedWritter写入文件

BufferedWritter将内容写入文件的最简单方法。它将文本写入字符 OutputStream ,缓冲字符,以便有效地写入单个字符,数组和字符串。

除非需要快速输出,否则建议将a包裹BufferedWriterWriter那些write()操作可能会很昂贵的地方,例如FileWriterOutputStreamWriter

由于它在写入之前进行缓冲,因此减少了IO操作,从而提高了性能。

BufferedWritter示例
public static void usingBufferedWritter() throws IOException
{
    String fileContent = "Hello Learner !! Welcome to how2codex.com.";
    
    BufferedWriter writer = new BufferedWriter(new FileWriter("c:/temp/samplefile1.txt"));
    writer.write(fileContent);
    writer.close();
}

使用FileWriter / PrintWriter写入文件

FileWriter最干净的写文件方式。语法是自我解释的,易于阅读和理解。FileWriter直接写入文件(降低性能),仅应在写入次数较少时使用。

FileWriter示例
public static void usingFileWriter() throws IOException
{
    String fileContent = "Hello Learner !! Welcome to how2codex.com.";
    
    FileWriter fileWriter = new FileWriter("c:/temp/samplefile2.txt");
    fileWriter.write(fileContent);
    fileWriter.close();
}

使用PrintWriter写格式化的文本文件。此类实现了中提供的所有打印方法PrintStream,因此您可以使用与System.out.println()语句一起使用的所有格式。

PrintWriter示例
public static void usingPrintWriter() throws IOException
{
    String fileContent = "Hello Learner !! Welcome to how2codex.com.";
    
    FileWriter fileWriter = new FileWriter("c:/temp/samplefile3.txt");
    PrintWriter printWriter = new PrintWriter(fileWriter);
    printWriter.print(fileContent);
    printWriter.printf("Blog name is %s""how2codex.com");
    printWriter.close();
}

使用FileOutputStream写入文件

使用FileOutputStream二进制数据写入一个文件FileOutputStream用于写原始字节 Stream ,例如图像数据。要编写字符 Stream ,请考虑使用FileWriter

FileOutputStream示例
public static void usingFileOutputStream() throws IOException
{
    String fileContent = "Hello Learner !! Welcome to how2codex.com.";
    
    FileOutputStream outputStream = new FileOutputStream("c:/temp/samplefile4.txt");
    byte[] strToBytes = fileContent.getBytes();
    outputStream.write(strToBytes);
 
    outputStream.close();
}

使用DataOutputStream写入文件

DataOutputStream允许应用程序以可移植的方式将原始Java数据类型写入 OutputStream 。然后,应用程序可以使用数据 InputStream 来读回数据。

DataOutputStream示例
public static void usingDataOutputStream() throws IOException
{
    String fileContent = "Hello Learner !! Welcome to how2codex.com.";
    
    FileOutputStream outputStream = new FileOutputStream("c:/temp/samplefile5.txt");
    DataOutputStream dataOutStream = new DataOutputStream(new BufferedOutputStream(outputStream));
    dataOutStream.writeUTF(fileContent);
 
    dataOutStream.close();
}

使用FileChannel写入文件

FileChannel可用于读取,写入,映射和处理文件。如果要处理大文件,FileChannel则可能比标准IO更快。

文件通道可以安全地供多个并发线程使用。

FileChannel示例
public static void usingFileChannel() throws IOException
{
    String fileContent = "Hello Learner !! Welcome to how2codex.com.";
    
    RandomAccessFile stream = new RandomAccessFile("c:/temp/samplefile6.txt""rw");
    FileChannel channel = stream.getChannel();
    byte[] strBytes = fileContent.getBytes();
    ByteBuffer buffer = ByteBuffer.allocate(strBytes.length);
    buffer.put(strBytes);
    buffer.flip();
    channel.write(buffer);
    stream.close();
    channel.close();
}

使用Java 7路径写入文件

Java 7引入了Files实用程序类,我们可以使用它的write功能来写文件,在内部它是OutputStream用来将字节数组写到文件中的。

路径示例
public static void usingPath() throws IOException
{
    String fileContent = "Hello Learner !! Welcome to how2codex.com.";
    
    Path path = Paths.get("c:/temp/samplefile7.txt");
 
    Files.write(path, fileContent.getBytes());
}

摘要

  1. 如果我们尝试写入不存在的文件,则将首先创建该文件,并且不会引发任何异常(使用Pathmethod 除外)。
  2. 写入文件内容以释放所有资源后,请始终关闭 OutputStream 。它还将有助于避免损坏文件。
  3. Use PrintWriter用于编写格式化的文本。
  4. FileOutputStream写二进制数据。
  5. 使用DataOutputStream写基本数据类型。
  6. FileChannel写的文件。

saigon has written 1445 articles

Leave a Reply