Java中如何创建文件和写入内容?
Talk is cheap, Show me the code. -- by: Linus Torvalds
创建一个文本文件:
// 指定文件名及文件编码PrintWriter writer = new PrintWriter("FileName.txt", "UTF-8");// 写入文件内容writer.println("第一行");writer.println("第二行");// 关闭文件writer.close();
创建一个二进制文件:
// 文件内容byte data[] = ...// 创建输出流并指定文件名FileOutputStream out = new FileOutputStream("FileName");// 写入数据out.write(data);// 关闭文件out.close();
还可以使用其他输出流进行文件的创建和写入:
字符输出流:OutputStreamWriter FileWriter BufferedWriter PrinterWriter StringWriter PipedWriter CharArrayWriter FilterWriter字节输出流: FilterOutputStream BufferedOutputStream DataOutputStream PrintStream ObjectOutputStream PipedOutputStream ByteArrayOutputStream
字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:
读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。字节流:一次读入或读出是8位二进制。字符流:一次读入或读出是16位二进制。设备上的数据无论是图片或者视频,文字,它们都以二进制存储的。二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据。
结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。
使用时一般是根据需求选择对应的输出流!