io流之写文件

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

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

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

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

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

实例如下:

 1 package book.io;
 2
 3 import java.io.File;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.OutputStream;
 8 import java.io.OutputStreamWriter;
 9 import java.io.PrintWriter;
10 import java.io.Writer;
11
12 public class WriteToFile {
13     //以字节为单位写文件,适合于写二进制文件,如图片等
14     public static void writeFileByBytes(String fileName){
15         File file = new File(fileName);
16         OutputStream out = null;
17         try {
18             out = new FileOutputStream(file);
19             String content = "文件内容:\n1,The First line;\n2,The Second line";
20             byte[] bytes = content.getBytes();//读取文件输出流中的字节
21             //写入文件
22             out.write(bytes);
23             System.out.println("写文件" + file.getAbsolutePath() + "成功!");
24         } catch (IOException e) {
25             System.out.println("写文件" + file.getAbsolutePath() + "失败!");
26             e.printStackTrace();
27         }finally{
28             if(out != null){
29                 try {
30                     out.close();
31                 } catch (IOException e) {
32                     e.printStackTrace();
33                 }
34             }
35         }
36     }
37     //以字符为单位写文件
38     public static void writeFileByChars(String fileName){
39         File file = new File(fileName);
40         Writer writer = null;
41         try {
42             writer = new OutputStreamWriter(new FileOutputStream(file));
43             String content = "文件内容:\n1,The first line;\n2,The second line";
44             writer.write(content);
45             System.out.println("写文件" + file.getAbsolutePath() + "成功!");
46         } catch (IOException e) {
47             System.out.println("写文件" + file.getAbsolutePath() + "失败!");
48             e.printStackTrace();
49         }finally{
50             if(writer != null){
51                 try {
52                     writer.close();
53                 } catch (IOException e) {
54                     e.printStackTrace();
55                 }
56             }
57         }
58     }
59     //以行为单位写文件
60     public static void writeFileByLines(String fileName){
61         File file = new File(fileName);
62         PrintWriter writer = null;
63         try {
64             writer = new PrintWriter(new FileOutputStream(file));
65             writer.println("文件内容:");
66             //写入各种基本类型数据
67             writer.println(true);
68             writer.print(155);
69             writer.println();
70             writer.flush();
71             System.out.println("写文件" + file.getAbsolutePath() + "成功!");
72         } catch (FileNotFoundException e) {
73             System.out.println("写文件" + file.getAbsolutePath() + "失败!");
74             e.printStackTrace();
75         }finally{
76             if(writer != null){
77                 writer.close();
78             }
79         }
80     }
81     public static void main(String[] args){
82         String fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp1.txt";
83         WriteToFile.writeFileByBytes(fileName);
84         fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp2.txt";
85         WriteToFile.writeFileByChars(fileName);
86         fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp3.txt";
87         WriteToFile.writeFileByLines(fileName);
88     }
89 }

结果:

写文件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进行标准输出相似。

时间: 2025-01-02 21:08:31

io流之写文件的相关文章

java——用递归和IO流来实现文件的复制

1 import java.io.ByteArrayInputStream; 2 import java.io.ByteArrayOutputStream; 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.Ou

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

1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:DirectoryInfo与Directory表示文件系统中的文件夹:Path表示文件系统中的路径:DriveInfo提供对有关驱动器的信息的访问.注意,XXXInfo与XXX类的区别是:XXX是静态类,XXXInfo类可以实例化. 还有个较为特殊的类System.MarshalByRefObject允许在支持远

C#常用IO流与读写文件

1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:DirectoryInfo与Directory表示文件系统中的文件夹:Path表示文件系统中的路径:DriveInfo提供对有关驱动器的信息的访问.注意,XXXInfo与XXX类的区别是:XXX是静态类,XXXInfo类可以实例化. 还有个较为特殊的类System.MarshalByRefObject允许在支持远

C#常用IO流及读写文件

1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:DirectoryInfo与Directory表示文件系统中的文件夹:Path表示文件系统中的路径:DriveInfo提供对有关驱动器的信息的访问.注意,XXXInfo与XXX类的区别是:XXX是静态类,XXXInfo类可以实例化. 还有个较为特殊的类System.MarshalByRefObject允许在支持远

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

为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既然是流动也就会有方向,有入方向和出方向.举个上传文件的栗子,现在有三个对象,文件.应用程序.上传的目标地址(服务器).简化的上传文件有两步: 应用程序读文件

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

/* *   源文件名:   桌面-我们今天学习IO流了哈哈哈哈-001.jpg *   修改后文件名:  桌面-000x.jpg */public class File_listFiles_updateFileName {         public static void main(String[] args) {            File file=new File("F:\\G盘\\学习资料\\新建文件夹");            File[] listFiles =

初识IO流——创建目录和文件

刚开始学习IO流我们首先接触到的是File类和Directory类,这两个类是静态类,他们的方法也都是静态方法,因此调用的时候直接用类来调用. 同时,又有FileInfo类和DirectoryInfo类,这两个类是非静态类,因此调用FileInfo类和DirectoryInfo类中的方法需要用对象来调用,FileInfo类和DirectoryInfo类里面的方法也分别与File类和Directory类中的方法差不多.下面我们来看看它们分别是如何创建目录和文件的. 1.Directory类创建目录

Java IO流中 File文件对象与Properties类

File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 booleancreateNewFile():创建新文件,如果文件存在,返回false booleanmkdir():创建目录,只能创建一级目录 booleanmkdirs():创建目录,可创建多级目录 删除 booleandelete():删除文件,如果文件不存在,返回false,如果删除的是目录,需要确保目录是空的 voiddeleteOnExit():程

利用IO流把单个文件切割成碎片文件

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class SplitFileTest { public static void main(String[] args) throws IOException { /* * 文件切割器 * 一个读取流