JavaSE IO流

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

一行一次读!!!!!
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

字节流转换为字符流

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

复制文件到另一个地方

        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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前