为了账号安全,请及时绑定邮箱和手机立即绑定

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 字节流缓冲
    查看全部
    0 采集 收起 来源:字节缓冲流

    2016-06-14

  • /** * 批量读取,对大文件而言效率高,最常用的读文件的方式 */ public static void printHexByByteArray(String fileName)throws IOException{ FileInputStream in = new FileInputStream(fileName); byte[] buf = new byte[8 * 1024]; /*从in中批量读取字节,放入到buf这个字节数组中, * 从第0个位置开始放,最多放buf.length个 * 返回的是读到的字节的个数 */ /*int bytes = in.read(buf,0,buf.length);//一次性读完,说明字节数组足够大 int j = 1; for(int i = 0; i < bytes;i++){ System.out.print(Integer.toHexString(buf[i] & 0xff)+" "); if(j++%10==0){ System.out.println(); } }*/ int bytes = 0; int j = 1; while((bytes = in.read(buf,0,buf.length))!=-1){ for(int i = 0 ; i < bytes;i++){ System.out.print(Integer.toHexString(buf[i] & 0xff)+" "); if(j++%10==0){ System.out.println(); } } } in.close(); }
    查看全部
  • 一、 in.read() 单字节适合读取小文件 in.read(byte[] bytes,int star,int size) 字节数组适合读取大文件 二、 long time = System.currentTimeMillis()//获取当前系统时间
    查看全部
  • 输入输出流
    查看全部
  • 文件操作的步骤
    查看全部
  • 打开文件
    查看全部
  • 字节流 InputStream、OutputStream 抽象了应用程序读写数据方式(父类,抽象类) FileInputStream、FileOutputStream 具体的实现了在文件中读写数据(子类) EOF=End 及文件结尾(in.read()=-1) 输入流基本方法 read(); int b=in.read();//读取一个字节无符号填充到int的低八位,前面的24位补零。(int是32位,一个字节8位)-1是EOF in.read(byte[] buf);//读取数据填充到字节数组buf in.read(byte[] buf,int start,int size);//同上,从buf的start位置开始存放size长度的数据 输出流基本方法write(); out.write(int b); //写出一个byte到流,b的低八位 out.write(byte[] buf);//将buf字节数组都写入到流 out.write(byte[] buf,int start,int size);//同上,详见read对应方法
    查看全部
  • File demo = new File("demo"); if(!demo.exists()) demo.mkdir();//创建demo目录 File file = new File(demo,"raf.dat"); if(!file.exists()) file.createNewFile();//在demo目录下,创建raf.dat文件 //打开文件,进行随机读写 RandomAccessFile raf = new RandomAccessFile(file, "rw"); raf.write('A');//只写一个字节,同时指针后移 System.out.println(raf.getFilePointer());//输出:1 raf.write('B'); //若要写入一个整数i则需要写四次 int i=0x7fffffff; raf.write(i>>>24);//高八位 raf.write(i>>>16); raf.write(i>>>8); raf.write(i);//低八位 //也可直接写入一个int raf.writeInt(i); //写入汉字 String s="中"; byte[] gbk=s.getBytes("gbk"); raf.write(gbk); System.out.println(raf.length(0);//输出:12(中文占俩字节) //读文件时必须把指针移到头部 raf.seek(0); //一次性读取 byte[] buf= new byte[(int)raf.length()]; raf.read(buf); System.out.println(Arrays.toString(buf)); //此时打印输出:[65,66,127,-1,-1,-1,127,-1,-1,-1,-42,-48] //开头的65,66是正确的AB,因为后八位已经能表示AB了 //也可按字符串输出 String s1=new String(buf,"gbk"); System.out.println(s1);//输出:AB?????(因为“中”的前后都有字节,只有定位到中的两个字节,才能读出它) raf.close();//最后要加上
    查看全部
  • RandomAccessFile:java提供的对文件内容的读写访问,支持随机访问文件,可以访问文件的任意位置 (1)java文件模型 在硬盘上的文件是byte存储的,是数据的集合 (2)打开文件 有两种模式"rw"(读写) "r"(只读) RandomAccessFile raf = new RandomeAccessFile(file,"rw") 文件指针,打开文件时指针在开头 pointer = 0; (3) 写方法 raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 (4)读方法 int b = raf.read()--->读一个字节 (5)文件读写完成后一定要关闭
    查看全部
  • public static void main(String[] args) throws IOException { FileUtils.listDirectory(new File("D:\\mylove")); //相当于下面的三行代码 /*File file=new File("D:\\mylove"); FileUtils fu=new FileUtils(); fu.listDirectory(file); */ }
    查看全部
    0 采集 收起 来源:遍历目录

    2018-03-22

  • public static void listDirectory(File dir)throws IOException{ if(!dir.exists()){ throw new IllegalArgumentException("目录"+dir+"不存在"); } if(!dir.isDirectory()){ throw new IllegalArgumentException(dir+"不是目录"); } /* String[] filenames=dir.list();//返回的是字符串数组,直接子的【名称】,不包括子目录下的内容 *for (String string : filenames) { *System.out.println(dir+"\\"+string); }*/ // 如果要遍历子目录下的内容,就需要构造成File对象做递归操作,File提供了直接返回File对象的API File[] files=dir.listFiles();//返回的是直接子目录(文件)的【抽象】 if(files!=null&&files.length>0){//判断是否存在子目录 for (File file : files) { if(file.isDirectory()){ listDirectory(file); //递归操作 }else{ System.out.println(file);//直接打印的是file对象 } } } } }
    查看全部
    0 采集 收起 来源:遍历目录

    2018-03-22

  • Java.IO.File类表示文件或目录,只用于表示文件或目录得信息,不能用于文件的访问。 常用的API: 1.创建File对象:File file=new File(String path);注意:File.seperater();获取系统分隔符,如:”\“. 2.boolean file.exists();是否存在. 3.file.mkdir();或者file.mkdirs();创建目录或多级目录。 4.file.isDirectory()或者file.isFile()判断是否是目录或者是否是文件。 5.file.delete();删除文件或目录。 6.file.createNewFile();创建新文件。 7.file.getName()获取文件名称或目录绝对路径。 8.file.getAbsolutePath()获取绝对路径。 9.file.getParent();获取父级绝对路径。
    查看全部
  • RandonAccessFile
    查看全部
  • java.io.File
    查看全部
  • String s="慕课ABC"; byte[] bytes1=s.getBytes();//把字符串转换成字符数组,编码为项目默认的编码 for(byte b: bytes1) System.out.println(Integer.toHexString(b & 0xff)+" ");//toHexString将字节(转换成了Int)以16进制的方式显示 byte[] bytes1=s.getBytes("gbk");//也可以转换成指定的编码 gbk编码: 中文占用两个字节,英文占用一个字节 utf-8编码:中文占用三个字节,英文占用一个字节 utf-16be编码:中文占用两个字节,英文占用两个字节,java为此编码 当字节序列是某种编码时,将字节序列转为字符串时,也要用该编码,否则会出现乱码 String str1=new String(bytes4);//项目默认的编码来转换,可能出现乱码 String str2=new String(bytes4,"utf-16be");//使用相应的编码 文本文件就是字节序列,可以是任意编码的字节序列 如果我们在中文机器上直接创建文本文件,那么该文件只认识ANSI编码(例如直接在电脑中创建文本文件)
    查看全部
    0 采集 收起 来源:文件的编码

    2018-03-22

举报

0/150
提交
取消
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!