1.I/O:input/output
  1.1.java.io.File
    表示:文件或者文件夹(目录)
  File f=new File("文件路径")
  注意:相对路径:非web项目的相对路径都是以项目名为起点(src/a.txt)(建议使用)
       绝对路径:d:/bin/a.txt(以盘符开头的)(不可取)

2.文件常见方法
  boolean flag=f.exists(); //文件是否存在
  flag=f.isFile(); //是否是文件
  flag=f.isDirectory(); //是否是目录
  str=f.getPath(); //获得文件的相对路径
  str=f.getAbsolutePath(); //获得文件的绝对路径
  str=f.getName(); //获得文件名
  flag=f.delete(); //删除文件
  flag=f.createNewFile(); //创建文件
  long=f.length(); //返回文件长度
  注意:File不能操作文件内容

3.InputStream/OutputStream
  文件:FileInputStream/FileOutputStream
    3.1 FileInputStream(输入流)
      数据从文件到java代码中。
      int read(); //读取一个字节
      int read(byte[]); //读取一串字节
      long avaliable; //文件长度
    3.2 FileInputStream(字节文件输入流)
      new FileInputStream(File);
      new FileInputStream("文件路径+文件名");
    3.3 FileOutputStream(输出流)
      数据从java代码中,写到文件或者其他介质中。
      void write(字节); //写入一个字节
      void write(byte[]); //写入字节数组
    3.4 FileOutputStream
      new FileOutputStream(File);
      new FileOutputStream("文件路径+文件名");
      new FileOutputStream("文件路径+文件名",true);
    注意:a.boolean:表示是否向文件末尾追加,如果是true,表示追加,false表示不追加(也就是覆盖),默认值为false
       b.创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件。

4.Reader/Writer(字符流)
  //能够用文本编辑器打开的文件,不乱码就是字符文件
  //能够用文本编辑器打开乱码的,就是字节文件
    4.1 FileReader
      int b=fr.read(); //读取一个字符
      int length=fr.read(char[]); //读取字符数组
    4.2 FileWriter
      fw.write(char); //写一个字符
      fw.write(char[]); //写字符数组
    4.3BufferedReader(字符输入缓冲流)
      BufferedReader br=new BufferedReader(new FileReader("文件路径"));
      String str=br.readLine(); //读取一行字符
    4.4BufferedWriter(字符输出缓冲流)
      BufferedWriter bw=new BufferedWriter(new FileWriter("文件路径"));
      bw.write(字符串);

运行结果:

 package Day19;

 import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class TestBuffer {
public static void main(String[] args) throws Exception {
buReader();
buWriter(); } private static void buWriter() throws Exception {
BufferedWriter bw=new BufferedWriter(new FileWriter("src/a.txt"));
bw.write("我是中国人");
//刷新缓存
bw.flush();
//默认执行flush(),关闭管道
bw.close();
} private static void buReader() throws Exception {
BufferedReader br=new BufferedReader(new FileReader("src/d.txt"));
//读取一行记录
// String str=br.readLine();
// str=br.readLine();
// System.out.println(str); String str;
while((str=br.readLine())!=null){
System.out.println(str);
}
}
}

代码示例

5.DataInputStream/DataOutputStream

6.小结
  6.1读写字符文件
    读:BufferedReader br=new BufferedReader(new FileReader("文件路径"));
    写:BufferedWriter bw=new BufferedWriter(new FileWriter("文件路径",boolean));
  6.2读写字节文件
    DataInputStream dis=new DataInputStream(new FileInputStream("文件路径"));
    DataOutputStream dos=new DataOutputStream(new FileOutputStream("文件路径"));
  6.3读取整个字符文件
    String str=null;
    while((str=br.readLine())!=-1){
      System.out.println(str);
    }
  6.4读取整个字节文件
    int b;
    while((b=dis.read())!=-1){
      System.out.println(b);
    }

 package Day20;

 import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream; public class TestByteFile {
public static void main(String[] args) throws Exception {
DataInputStream dis1=new DataInputStream(new FileInputStream("src/a.jpg"));
int a=dis1.read();
System.out.println(a);
dis1.close(); DataOutputStream dos1=new DataOutputStream(new FileOutputStream("src/b.jpg"));
dos1.write(255);
dos1.close(); //复制a.jpg--->b.jpg
DataInputStream dis2=new DataInputStream(new FileInputStream("src/a.jpg"));
DataOutputStream dos2=new DataOutputStream(new FileOutputStream("src/b.jpg"));
int b;
while((b=dis2.read())!=-1){
dos2.write(b);
}
dis2.close();
dos2.close();
}
}

代码示例

File I|O(八)的更多相关文章

  1. Web服务器与数据库服务器分离 导入 Excel数据至数据库

    一般情况一般项目WEB服务器与数据库均部署在一台服务器,文件上传,数据导入在一台服务器完成.web服务器与数据库服务器分离,文件上传与数据导入将分布在两台服务器或多台服务器之间.本案例为两台服务器,具 ...

  2. python 在最后一行追加

    2.文本文件的写入 import fileinput file = open("D:\\test.txt", encoding="utf-8",mode=&qu ...

  3. ImageMagick常用指令详解

    Imagemagick常用指令 (ImageMagick--蓝天白云) (ImageMagick官网) (其他比较有价值的IM参考) (图片自动旋转的前端实现方案) convert 转换图像格式和大小 ...

  4. oracle 学习

    一.数据库语言部分1. SQL语言:关系数据库的标准语言2. PL/SQL:过程化语言Procedural Language3. SQL*Plus:简单的报表,操作系统接口 4. Oracle 8.0 ...

  5. w3wp.exe CPU过百问题

    w3wp.exe CPU过百问题 最近发布在windows  server2012  IIS8.0上的一个WebAPI项目,才几十个人在线,CPU就会出现过百情况,并且CPU一旦过百应用程序池就自动暂 ...

  6. 在Centos7.2(64位)下搭建Web服务器

    一:通过Yum安装mysql 1 # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 2 # rpm -i ...

  7. luffy项目后台drf搭建(1)

    一 进入虚拟环境 打开crm,输入命令 workon luffy 虚拟环境使用文档 二 安装基本类库 pip install django pip install PymySQL pip instal ...

  8. Windbg+Procdump解决w3wp.exe CPU过百问题

    最近发布在windows  server2012  IIS8.0上的一个WebAPI项目,才几十个人在线,CPU就会出现过百情况,并且CPU一旦过百应用程序池就自动暂停掉,看到这个问题我感觉应该是程序 ...

  9. 深入理解磁盘文件系统之inode

    一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统 ...

  10. [原]Android打包之Eclipse打多渠道包

    Android自动打包流程详细图: 步骤一和步骤二参考:[原]Android打包之Eclipse打包 步骤三:编写build.xml <?xml version="1.0" ...

随机推荐

  1. SQL基础一

    一.什么是SQL? SQL是结构化查询语言 SQL使我们有能力访问数据库 SQL是一种ANSI的标准计算机语言 二.SQL能做什么? SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可 ...

  2. display:inline-block; 去除间隙的方法 总结:

    个人常用: 如: <ul> <li><a href="#" >实时数据</a></li> <li><a ...

  3. 对于C++指针的详细理解

    (1)每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址.  eg: int var1; &var1  表示var1的地址 ...

  4. 一年java程序员的感悟

    前沿 在小公司干了差不多一年,刚进来与一个中级程序员做交接,过了大概一个月,那个中级程序员走了,从此,走上了"泥泞"的道路(独立开发),熟悉了公司的项目和业务用了一个月左右,公司当 ...

  5. try-catch-finally的问题

    参考: https://blog.csdn.net/chengzhezhijian/article/details/17264531 面试一家公司的面试题,注: 那个面试官对这个问题挺看重的(可是我回 ...

  6. HCNP学习笔记之ICMP协议与ping原理以及用Python实现ping

    一.ICMP协议分析 ICMP:Internet控制报文协议.由于IP协议并不是一个可靠的协议,它不保证数据被成功送达,那么,如何才能保证数据的可靠送达呢? 这里就需要使用到一个重要的协议模块ICMP ...

  7. SpringMVC的RequestMapping

    在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在 ...

  8. Zabbix JVM 安装

    Zabbix 服务端安装插件 系统:centos 7.4 x64 环境:zabbix 3.0.16 yum源:rpm -ivh http://repo.zabbix.com/zabbix/3.0/rh ...

  9. Nginx rewrite配置

    rewrite应用 Rewrite模块设置及Wordpress和Discuz的示例.Nginx的Rewrite规则比Apache的简单灵活多了,从下面介绍可见一斑. rewrite配置 Nginx可以 ...

  10. 20162326 《Java程序设计》第3周学习总结

    20162326 <Java程序设计>第3周学习总结 教材学习内容总结 这周我通过课堂学习了VIM的列编辑crtl+v,shift+i shift+a·分别是左侧插入和右侧插入.还学习了使 ...