用Java程序写文件有多种方式,对于不同类型的数据,有不同的写方法。写文件的关键技术点如下:

   1.FileOutputStream打开文件输出流,通过write方法以字节为单位写文件,是写文件最通用的方法,能写任何类型的文件,特别适合写二进制数据文件。

   2.OutputStreamWriter打开文件输出流,通过write方法以字符为单位写文件,能够将字符数组和字符串写入文件。

   3.PrintWriter打开文件输出流,通过print和println方法将字符串写入文件,与System.out的用法相似,常用于写格式化文本。

  通过以上各种文件输出流将数据写入文件后,需要调用close方法关闭文件输出流。

实例如下:

 package book.io;

 import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer; public class WriteToFile {
//以字节为单位写文件,适合于写二进制文件,如图片等
public static void writeFileByBytes(String fileName){
File file = new File(fileName);
OutputStream out = null;
try {
out = new FileOutputStream(file);
String content = "文件内容:\n1,The First line;\n2,The Second line";
byte[] bytes = content.getBytes();//读取文件输出流中的字节
//写入文件
out.write(bytes);
System.out.println("写文件" + file.getAbsolutePath() + "成功!");
} catch (IOException e) {
System.out.println("写文件" + file.getAbsolutePath() + "失败!");
e.printStackTrace();
}finally{
if(out != null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//以字符为单位写文件
public static void writeFileByChars(String fileName){
File file = new File(fileName);
Writer writer = null;
try {
writer = new OutputStreamWriter(new FileOutputStream(file));
String content = "文件内容:\n1,The first line;\n2,The second line";
writer.write(content);
System.out.println("写文件" + file.getAbsolutePath() + "成功!");
} catch (IOException e) {
System.out.println("写文件" + file.getAbsolutePath() + "失败!");
e.printStackTrace();
}finally{
if(writer != null){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//以行为单位写文件
public static void writeFileByLines(String fileName){
File file = new File(fileName);
PrintWriter writer = null;
try {
writer = new PrintWriter(new FileOutputStream(file));
writer.println("文件内容:");
//写入各种基本类型数据
writer.println(true);
writer.print(155);
writer.println();
writer.flush();
System.out.println("写文件" + file.getAbsolutePath() + "成功!");
} catch (FileNotFoundException e) {
System.out.println("写文件" + file.getAbsolutePath() + "失败!");
e.printStackTrace();
}finally{
if(writer != null){
writer.close();
}
}
}
public static void main(String[] args){
String fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp1.txt";
WriteToFile.writeFileByBytes(fileName);
fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp2.txt";
WriteToFile.writeFileByChars(fileName);
fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp3.txt";
WriteToFile.writeFileByLines(fileName);
}
}

结果:

写文件C:\Users\Admin\Desktop\CAI\20160720\temp1.txt成功!
写文件C:\Users\Admin\Desktop\CAI\20160720\temp2.txt成功!
写文件C:\Users\Admin\Desktop\CAI\20160720\temp3.txt成功!

分析:1.用writeFileByBytes方法以字节为单位写数据到文件。使用了字节输出流FileOutputStream类,通过write方法可以一次写入一个字节,也可以写入一个字节数组

   2.writeFileByChars方法以字符为单位写数据到文件。使用了字符输出流OutputStreamWriter类,将FileOutStream对象封装成OutputStream对象,再调用write方法将字符数据写入到文件中,通过write方法可以一次写入一个字符、一个字符数组或者一个字符串。

  3.writeFileByLines方法以字符串为单位写数据到文件。使用了PrintWriter类,将FileOutputWriter对象封装成PrintWriter对象,再调用print或者println方法将字符串写入到文件,其中println在写入字符串后进行换行,其用法与System.out进行标准输出相似。

io流之写文件的更多相关文章

  1. C#常用IO流与读写文件

    .文件系统 ()文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:Directory ...

  2. C#常用IO流与读写文件 (转)

    源自https://www.cnblogs.com/liyangLife/p/4797583.html 谢谢 1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里.Fil ...

  3. Java 基础(四)| IO 流之使用文件流的正确姿势

    为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景 ...

  4. Java IO流之普通文件流和随机读写流区别

    普通文件流和随机读写流区别 普通文件流:http://blog.csdn.net/baidu_37107022/article/details/71056011 FileInputStream和Fil ...

  5. IO流-批量修改文件名称案例

    /* *   源文件名:   桌面-我们今天学习IO流了哈哈哈哈-001.jpg *   修改后文件名:  桌面-000x.jpg */public class File_listFiles_upda ...

  6. Java中使用IO流实现大文件的分裂与合并

    文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时候就可以把这个文件切割成3个1G的文件 ,分 ...

  7. IO流-复制多极文件夹(递归实现)

    package com.io.test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...

  8. JAVA IO流编程 实现文件的写入、写出以及拷贝

    一.流的概念 流:数据在数据源(文件)和程序(内存)之间经历的路径. 输入流:数据从数据源(文件)到程序(内存)的路径. 输出流:数据从程序(内存)到数据源(文件)的路径. 以内存为参照,如果数据向内 ...

  9. Java笔记(二十七)……IO流中 File文件对象与Properties类

    File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 booleancreateNewFile():创建新文件,如果 ...

随机推荐

  1. 常用oracle查询总结

    --查询表空间使用情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", ...

  2. shell脚本应用(5)--实用脚本片段

    校验参数 if [ "$#" -ne 1 ] then echo "Incorrect number of arguments" echo "Usag ...

  3. POJ-1177 Picture 矩形覆盖周长并

    题目链接:http://poj.org/problem?id=1177 比矩形面积并麻烦点,需要更新竖边的条数(平行于x轴扫描)..求横边的时候,保存上一个结果,加上当前长度与上一个结果差的绝对值就行 ...

  4. SIP SDP RTSP RTP RTCP webrtc

    rfc1889  rfc2326  rfc3261  rfc3550  rfc3856  rfc6120. SIP SDP RTSP  RTP RTCP,就像他们出现的顺序一样,他们在实际应用中的启用 ...

  5. 源码生成deb包

    方法一 源码包要求是使用 automake 进行编译管理的. 安装路径不能指定为 /usr/local 下的目录,否则生成 deb 包期间报错. 制作的工具是 dh-make ,如果没有安装,要先安装 ...

  6. springboot 详细配置2

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  7. 从a站点跳转到b站点,通过url的参数判断是否让该用户选择身份

    一.问题的由来 问题是这样子给出来,今天产品那边跟我说,在a网站跳转到b网站时,让用户有一个选择身份的弹窗.因为公司有两个不同站点,你无论在a或者b网站注册后,都可以随便登录这两个站点,进入之后都会有 ...

  8. eclipse 不能切换输入法

    按了Alt+Shift键?再按一次把EN切换成CN,然后再Ctrl+Shift就可以切换输入法

  9. Add-VMNetworkAdapterAcl(添加访问控制列表)

    Add-VMNetworkAdapterAclCreates an ACL to apply to the traffic through a virtual machine network adap ...

  10. SVN源代码泄露

    1. 联想b2b站SVN源代码泄露 开启Firefox,输入:b2b.thinkworldshop.com.cn/.svn/entries Webserver返回如下信息: