JavaSE IO流

Wesley13
• 阅读 643

1.文件操作:

在Java中如何操作磁盘中文件,java中把文件作为一个对象进行操作
  
  File类进行表示磁盘中的文件:
     路径:
          绝对路径:从磁盘的根目录进行表示 如:E:\vedio\20170713\JavaSE\T_day01\question\常见面试题_01.txt
          相对路径:  相对某一个参照物进行定位文件,参照物 :E:\vedio\20170713\JavaSE\T_day01   路径:question\常见面试题_01.txt
      
     路径的分隔符:包括 : / \
     File.separator  斜杠
     File.pathSeparatorChar  冒号 
     
     E:\vedio\a.txt -->E+File.pathSeparatorChar+File.separator+vedio+File.separator+a.txt

2.如何创建一个文件对象

**File**(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

**File**(String pathname)
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

**File**(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例

3.如何在磁盘使用Java创建一个新的文件      

boolean

**createNewFile**()
          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

boolean

**delete**()
          删除此抽象路径名表示的文件或目录。

boolean

**exists**()
          测试此抽象路径名表示的文件或目录是否存在。

String

**getName**()
          返回由此抽象路径名表示的文件或目录的名称。

String

**getParent**()
          返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null

File

**getParentFile**()
          返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null

long

**length**()
          返回由此抽象路径名表示的文件的长度。

String[]

**list**()
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

String

**toString**()
          返回此抽象路径名的路径名字符串。

创建新的目录

 File f = new File("d:\\video\\124.txt");                File f1 = new File("d:\\video","123.txt");

**File**(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

**File**(String pathname)
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

创建新的  文件夹(目录

new File("D:\\video\\123").mkdir;          创建名为123的文件夹,video文件夹必须有

new File("D:\\video2\\123").mkdir;        创建video和123文件夹

boolean

**mkdir**()
          创建此抽象路径名指定的目录。

boolean

**mkdirs**()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

        File f1 = new File("D:\\video6\\122\\1.txt");          

        if (f1.getParentFile().exists()) {
            f1.createNewFile();
        } else {
            f1.getParentFile().mkdirs();           //创建1.txt之前所有的文件夹
            f1.createNewFile();                      //再创建1.txt
        }     

IO流:数据的传输

    从方向上分 :输入   和   输出  (以计算机的内存)
    从数据上分 : 字节流 (以字节为单位读取)   字符流(以字符为单位)
    从功能上分 : 节点流   包装流(经过处理的流 ,目的提高效率)
    
   所有的流都来自于 四个抽象类:
   InputStream    OutputStream   ---》字节流  (读写任何文件)
   Reader         Writer         ---》字符流  (只能读写文本文件)

           
字节流
     InputStream --》FileInputStream    InputStream in = new FileInputStream("D:\\video\\123.txt");
     OutputStream--》FileOutputStream
     
字符流
      Reader  ---》FileReader
      Writer  ---》FileWriter    

包装流:
      BufferedReader 
      BufferedWriter

JavaSE IO流

一行一次读!!!!!
BufferedReader br = null;

BufferedWriter bw = null;

//创建FileReader对象,要用FileReader再转BufferedReader

FileReader fr = new FileReader("d:\\d.txt");

FileWriter fw = new FileWriter("d:\\dcopy.txt");

br = new BufferedReader(fr);

bw = new BufferedWriter(fw);

//循环读取文件

String s = "";

while((s=br.readLine()) != null)

{

  //按行读取哦。

  bw.write(s + "\r\n"); //这里写入不包括换行符,所以加上去就可以了

}

数组字节流:是操作数组中的数据,和文件没有关系
     ByteArrayInputStream  
     ByteArrayOutputStream

字节流转换为字符流

public static void convertByteToChar() throws IOException{
        File file= new File( "d:/test.txt");
         //获得一个字节流
        InputStream is= new FileInputStream( file);
         //把字节流转换为字符流,其实就是把字符流和字节流组合的结果。
        Reader reader= new InputStreamReader( is);
         char [] byteArray= new char[( int) file.length()];
         int size= reader.read( byteArray);
        System. out.println( "大小:"+size +";内容:" +new String(byteArray));
         is.close();
         reader.close();
  }

复制文件到另一个地方

        File f1 = new File("D:\\video\\024.txt");
        File f2 = new File("D:\\video7\\test");
        try {
            InputStream in = new FileInputStream(f1);

            byte[] bs = new byte[1024];
            if (!f2.getParentFile().exists()) {

                f2.getParentFile().mkdirs();
    
            }
            OutputStream ou = new FileOutputStream(f2);

           int len = 0;
            while (len=(in.read(bs, 0, bs.length)) != -1) {
                 ou.write(bs,0,bs.len); 
            }

            in.close();
            ou.close();

                      

http://blog.csdn.net/yuebinghaoyuan/article/details/7388059

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这