当前位置: 主页 > JAVA语言

java 写入大量文件到磁盘-java将字符串写入文件

发布时间:2023-03-30 07:03   浏览次数:次   作者:佚名

Java文件写入的6种方法

2022-12-08Java

写程序时经常会碰到读写文件的场景,在java中操作文件的方法本质上只有两种:字符流和字节流,而他们的实现类又有很多,因此,有时候用起来java 写入大量文件到磁盘,就会比较乱。

java 写入大量文件到磁盘_文件怎写入磁盘根目录_java将字符串写入文件

这篇文章系统介绍了java操作文件的几种方式,学习一下,

filewriter类的实现如下java 写入大量文件到磁盘

/** 
  * 方法 1:使用 filewriter 写文件 
  * @param filepath 文件目录 
  * @param content  待写入内容 
  * @throws ioexception 
  */ 
public static void filewritermethod(string filepath, string content) throws ioexception { 
    try (filewriter filewriter = new filewriter(filepath)) { 
        filewriter.append(content); 
    } 
}

文件怎写入磁盘根目录_java将字符串写入文件_java 写入大量文件到磁盘

只需要传入具体的文件路径和待写入的内容即可,调用代码如下,

public static void main(string[] args) { 
    filewritermethod("/users/mac/downloads/io_test/write1.txt", "hello, java."); 
}

了解了缓存区的优点之后,咱们回到本文的主题,接下来我们用bufferedwriter来文件的写入,实现代码如下,

文件怎写入磁盘根目录_java 写入大量文件到磁盘_java将字符串写入文件

/** 
 * 方法 2:使用 bufferedwriter 写文件 
 * @param filepath 文件目录 
 * @param content  待写入内容 
 * @throws ioexception 
 */ 
public static void bufferedwritermethod(string filepath, string content) throws ioexception { 
    try (bufferedwriter bufferedwriter = new bufferedwriter(new filewriter(filepath))) { 
        bufferedwriter.write(content); 
    } 
}

/** 
 * 方法 3:使用 printwriter 写文件 
 * @param filepath 文件目录 
 * @param content  待写入内容 
 * @throws ioexception 
 */ 
public static void printwritermethod(string filepath, string content) throws ioexception { 
    try (printwriter printwriter = new printwriter(new filewriter(filepath))) { 
        printwriter.print(content); 
    } 
}

/** 
 * 方法 4:使用 fileoutputstream 写文件 
 * @param filepath 文件目录 
 * @param content  待写入内容 
 * @throws ioexception 
 */ 
public static void fileoutputstreammethod(string filepath, string content) throws ioexception { 
    try (fileoutputstream fileoutputstream = new fileoutputstream(filepath)) { 
        byte[] bytes = content.getbytes(); 
        fileoutputstream.write(bytes); 
    } 
}

java 写入大量文件到磁盘_文件怎写入磁盘根目录_java将字符串写入文件

/** 
 * 方法 5:使用 bufferedoutputstream 写文件 
 * @param filepath 文件目录 
 * @param content  待写入内容 
 * @throws ioexception 
 */ 
public static void bufferedoutputstreammethod(string filepath, string content) throws ioexception { 
    try (bufferedoutputstream bufferedoutputstream = new bufferedoutputstream( 
            new fileoutputstream(filepath))) { 
        bufferedoutputstream.write(content.getbytes()); 
    } 
}

/** 
 * 方法 6:使用 files 写文件 
 * @param filepath 文件目录 
 * @param content  待写入内容 
 * @throws ioexception 
 */ 
public static void filestest(string filepath, string content) throws ioexception { 
    files.write(paths.get(filepath), content.getbytes()); 
}

import java.io.*; 
import java.nio.file.files; 
import java.nio.file.paths; 
 
public class writeexample { 
    public static void main(string[] args) throws ioexception { 
        // 构建写入内容 
        stringbuilder stringbuilder = new stringbuilder(); 
        for (int i = 0; i < 1000000; i++) { 
            stringbuilder.append("abcdefghigklmnopqrseuvwxyz"); 
        } 
        // 写入内容 
        final string content = stringbuilder.tostring(); 
        // 存放文件的目录 
        final string filepath1 = "/users/mac/downloads/io_test/write1.txt"; 
        final string filepath2 = "/users/mac/downloads/io_test/write2.txt"; 
        final string filepath3 = "/users/mac/downloads/io_test/write3.txt"; 
        final string filepath4 = "/users/mac/downloads/io_test/write4.txt"; 
        final string filepath5 = "/users/mac/downloads/io_test/write5.txt"; 
        final string filepath6 = "/users/mac/downloads/io_test/write6.txt"; 
 
        // 方法一:使用 filewriter 写文件 
        long stime1 = system.currenttimemillis(); 
        filewritertest(filepath1, content); 
        long etime1 = system.currenttimemillis(); 
        system.out.println("filewriter 写入用时:" + (etime1 - stime1)); 
 
        // 方法二:使用 bufferedwriter 写文件 
        long stime2 = system.currenttimemillis(); 
        bufferedwritertest(filepath2, content); 
        long etime2 = system.currenttimemillis(); 
        system.out.println("bufferedwriter 写入用时:" + (etime2 - stime2)); 
 
        // 方法三:使用 printwriter 写文件 
        long stime3 = system.currenttimemillis(); 
        printwritertest(filepath3, content); 
        long etime3 = system.currenttimemillis(); 
        system.out.println("printwritertest 写入用时:" + (etime3 - stime3)); 
 
        // 方法四:使用 fileoutputstream  写文件 
        long stime4 = system.currenttimemillis(); 
        fileoutputstreamtest(filepath4, content); 
        long etime4 = system.currenttimemillis(); 
        system.out.println("fileoutputstream 写入用时:" + (etime4 - stime4)); 
 
        // 方法五:使用 bufferedoutputstream 写文件 
        long stime5 = system.currenttimemillis(); 
        bufferedoutputstreamtest(filepath5, content); 
        long etime5 = system.currenttimemillis(); 
        system.out.println("bufferedoutputstream 写入用时:" + (etime5 - stime5)); 
 
        // 方法六:使用 files 写文件 
        long stime6 = system.currenttimemillis(); 
        filestest(filepath6, content); 
        long etime6 = system.currenttimemillis(); 
        system.out.println("files 写入用时:" + (etime6 - stime6)); 
    } 
 
    /** 
     * 方法六:使用 files 写文件 
     * @param filepath 文件目录 
     * @param content  待写入内容 
     * @throws ioexception 
     */ 
    private static void filestest(string filepath, string content) throws ioexception { 
        files.write(paths.get(filepath), content.getbytes()); 
    } 
 
    /** 
     * 方法五:使用 bufferedoutputstream 写文件 
     * @param filepath 文件目录 
     * @param content  待写入内容 
     * @throws ioexception 
     */ 
    private static void bufferedoutputstreamtest(string filepath, string content) throws ioexception { 
        try (bufferedoutputstream bufferedoutputstream = new bufferedoutputstream( 
                new fileoutputstream(filepath))) { 
            bufferedoutputstream.write(content.getbytes()); 
        } 
    } 
 
    /** 
     * 方法四:使用 fileoutputstream  写文件 
     * @param filepath 文件目录 
     * @param content  待写入内容 
     * @throws ioexception 
     */ 
    private static void fileoutputstreamtest(string filepath, string content) throws ioexception { 
        try (fileoutputstream fileoutputstream = new fileoutputstream(filepath)) { 
            byte[] bytes = content.getbytes(); 
            fileoutputstream.write(bytes); 
        } 
    } 
 
    /** 
     * 方法三:使用 printwriter 写文件 
     * @param filepath 文件目录 
     * @param content  待写入内容 
     * @throws ioexception 
     */ 
    private static void printwritertest(string filepath, string content) throws ioexception { 
        try (printwriter printwriter = new printwriter(new filewriter(filepath))) { 
            printwriter.print(content); 
        } 
    } 
 
    /** 
     * 方法二:使用 bufferedwriter 写文件 
     * @param filepath 文件目录 
     * @param content  待写入内容 
     * @throws ioexception 
     */ 
    private static void bufferedwritertest(string filepath, string content) throws ioexception { 
        try (bufferedwriter bufferedwriter = new bufferedwriter(new filewriter(filepath))) { 
            bufferedwriter.write(content); 
        } 
    } 
 
    /** 
     * 方法一:使用 filewriter 写文件 
     * @param filepath 文件目录 
     * @param content  待写入内容 
     * @throws ioexception 
     */ 
    private static void filewritertest(string filepath, string content) throws ioexception { 
        try (filewriter filewriter = new filewriter(filepath)) { 
            filewriter.append(content); 
        } 
    } 
}

java将字符串写入文件_java 写入大量文件到磁盘_文件怎写入磁盘根目录

在查看结果之前,我们先去对应的文件夹看看写入的文件是否正常,如下图所示

从上述结果可以看出,每种方法都正常写入了26 mb的数据,他们最终执行的结果如下图所示,