用FileInputStream和FileOutPutStream读写文件

用FileInputStream和FileOutPutStream读写文件

package io;

import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestIO {
public static void main(String[] args) throws IOException {
   //写文件
   File file=new File("demo1.txt");//抽象一个1.txt的文件,处理文件名或者路径
   //构造两个FileOutPutStream的实例对象,先定义一个File类文件的做法比较规范,通用
   FileOutputStream fos1=new FileOutputStream(file,false);//true表示如果文件已经存在,没执行程序一次便往文件追加一次内容,否则会每一次的执行结果会覆盖文件上一次执行结果
   BufferedOutputStream bos=new BufferedOutputStream(fos1);//把fos1封装成具有缓冲功能的文件输出流
   FileOutputStream fos2=new FileOutputStream("demo2.txt");//用一个String构造一个FileOutputStream对象,String为文件名,这种构造方法也可以有两个参数,同上
   DataOutputStream dos=new DataOutputStream(fos2);//DataOutputStream提供了写入任意对象的能力
   String s1="How are you?";
   String s2="Fine.Thanks!";
   dos.writeBytes(s1+"   "+s2);
   fos1.write(s1.getBytes());//把字符串s1以字节流形式写入1.txt文件中
//   fos2.write(s2.getBytes());//把字符串s2以字节形式流写入2.txt文件中
   fos1.write(s2.getBytes());

//读出文件内容
   FileInputStream fis=new FileInputStream(file);
   byte[] b=new byte[fis.available()];//创建一个字节数组,数组长度与file中获得的字节数相等
   while(fis.read(b)!=-1){
    System.out.println(new String(b));//打印出从file文件读取的内容
   }
  
   //复制文件
   //用“.”把file的文件名分隔开
   String[]s=file.getName().split("\\.");//因为"."在正则表达式中有特殊的含义,使用的时候必须进行转义。
   String copyFName=s[0]+"_"+"copy"+"."+s[1];
   File file1=new File(copyFName);
   FileOutputStream fos=new FileOutputStream(file1,true);
   fos.write(b);//把刚刚从file 文件读出的内容写入副本file1
  
}

}

结果:

打印结果:How are you?Fine.Thanks!

运行结果:程序执行后,在该工程下生成了demo1.txt,demo2.txt,demo1_copy.txt三个文件其中的内容分别为:“How are you?Fine.Thanks! ”,“How are you?   Fine.Thanks!”,"How are you?Fine.Thanks!"

总结:

1、FileInputStream是InputStream类(字节流输入)的子类,以字节流方式读取文件;FileInputStream的构造函数参数可以是File文件,也可以是字符串,但实际上使用File文件会更加规范。

2、类似的,FileOutputStream是OutputStream类的子类,以字节流方式写入文件。

3、与File类不同(File类关注的是文件在磁盘上的存储),FileInputStream,FileOutputStream关注是的文件的内容

在使用fileoutputstream时经常出现FileNotFoundException问题,即便是同一个程序(可行)改了一下包名再重新编译,就会无缘无故的抛出FileNotFoundException问题。这曾经困扰我好几个月,前几次都稀里糊涂的解决了,今天又出问题了,便下定决心解决了它。

首先,要明确FileOutputStream并不会帮你创建不存在的路径,所以要先创建路径,再创建文件。

[java] view plaincopy
  1. <span>    </span>File cacheDir = new File("data/data/com.kavinapps.androidk.pcexam/databases/");//设置目录参数
  2. cacheDir.mkdirs();//新建目录
  3. Log.i("copySd2phone","新建data/data目录成功");
  4. String filename;
  5. //获得文件名的长度
  6. filename = "carnum.db";
  7. Log.i("createNewFile","filename= "+filename);
  8. //文件名
  9. cacheFile = new File(cacheDir,filename);//设置参数
  10. cacheFile.createNewFile();//生成文件
  11. Log.i("createNewFile","生成文件成功"+cacheFile.getName());
  12. output = new FileOutputStream( "data/data/com.kavinapps.androidk.pcexam/databases/carnum.db" );

在以前,我往往只使用最后一行,有时候不会出错,但大多数时候行不通。

用FileInputStream和FileOutPutStream读写文件相关推荐

  1. FileInputStream与FileOutputStream 复制文件例子代码

    FileInputStream与FileOutputStream 复制文件例子代码 try {File sourceFile = new File("C:\\Users\\prize\\De ...

  2. 用FileInputStream和FileOutputStream实现文件复制粘贴

    定义一个方法 参数: srcFile:被复制的文件 destFile:通过复制得到的新文件 public static void copyFile(File srcFile, File destFil ...

  3. FileInputStream和FileOutputStream实现任何文件类型的拷贝

    文章目录 文件拷贝 实现代码 再次强调 运行截图 运行前 运行后 文件拷贝 使用FileInputStream +FileOutputStream完成文件的拷贝 拷贝的过程应该是一边读,一边写 使用以 ...

  4. java中使用IO将文件切割后保存(FileInputStream、FileOutputStream)

    直接代码: public class Demo {public static void main(String[] args) throws IOException {split(new File(& ...

  5. java.io几种读写文件的方式

    一.Java把这些不同来源和目标的数据都统一抽象为数据流. Java语言的输入输出功能是十分强大而灵活的. 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作 ...

  6. Java读写文件的几种方式

    前言 Java中读写文件是非常基本的IO操作了,现在总结一下常见的用法.首先总结一下读取文件的步骤: 根据文件的路径获取到文件File对象 将File对象转换成输入流InputStream 将输入流读 ...

  7. java 对象读写_java 对象输入输出流读写文件的操作实例

    java 对象输入输出流读写文件的操作实例 java 支持对对象的读写操作,所操作的对象必须实现Serializable接口. 实例代码: package vo; import java.io.Ser ...

  8. android读写文件

    一般要是在PC上建立一个虚拟机,然后用DDMS的file explorer 查看虚拟手机上的文件 但是这个方法运行速度之慢实在是不能忍,一般都是直接用手机调试,在读写文件的时候就有问题了,首先不能读写 ...

  9. java 写文件 0x0d_Java 读写文件 - My and My Princess…… - OSCHINA - 中文开源技术交流社区...

    import java.io.File; import java.io.FileWriter; import java.io.IOException; /** * 对文本文件进行读写操作 */ pub ...

  10. java(IO)读写文件乱码转换UTF-8问题

    java(IO)读写文件乱码转换UTF-8问题 读取文件String Content = ""; // 文件很长的话建议使用StringBuffertry {FileInputSt ...

最新文章

  1. Selenium3+python自动化009- 多选框
  2. 数据结构C#版笔记--堆栈(Stack)
  3. linux中PATH变量-详细介绍
  4. android网页接口实现方法,Android 程序员搞 web 之 webApi (十 四)
  5. 工作 10 年,月薪过万者不足三成,程序员却笑了!
  6. 从红芯造假事件,看国产软件的两难困境 | 畅言
  7. iphone 利用UIImageView来制作幻灯片
  8. 【路径规划】基于matlab GUI粒子群算法机器人避障路径规划【含Matlab源码 923期】
  9. Redis 数据结构之dict(2)
  10. C++ unordered_map初始化
  11. 50道编程题(有精力的同学看看)
  12. 2025年单车平均搭载7-8颗!车载摄像头进入「前装」红利期
  13. Android机顶盒adb调试及一直显示offline的处理
  14. 三菱PLC功能指令详解
  15. Matlab 绘制 - 点和向量:向量加减的方法和源码
  16. WiFi大师4.0.5源码最新独立版本
  17. SuperMap云许可配置
  18. 陈艾盐:《春燕》百集访谈节目第五十九集
  19. 日期转换 例如 二零零六年十二月二十一日 转换成 2006年12月21日
  20. 数据分析-前置条件(采集、存储、治理)

热门文章

  1. Magpie: 基于React的炫酷的滚动抽奖程序
  2. (原創) 有限狀態機FSM coding style整理 (SOC) (Verilog)
  3. 详解tomcat的连接数与线程池--转载
  4. 时间操作(struct tm、time_t)求指定日期 前n天的日期
  5. android开发的学习路线
  6. android 之手机拨号器,以及短信发送器的简单实现
  7. 如何解决mac在访达里不可以新建txt文本的问题?
  8. 适用于苹果Mac的 5 个 SSH 客户端软件
  9. inDesign教程,如何共享inDesign文件?
  10. 如何在Mac上禁用通知预览?