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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 5)FileInputStream--->具体实现了在文件上读取数据 /** * 读取指定文件内容,按照16进制输出到控制台 * 并且每输出10个byte换行 * @param fileName * 单字节读取不适合大文件,大文件效率很低 */ public static void printHex(String fileName)throws IOException{ //把文件作为字节流进行读操作 FileInputStream in = new FileInputStream(fileName); int b ; int i = 1; while((b = in.read())!=-1){ if(b <= 0xf){ //单位数前面补0 System.out.print("0"); } System.out.print(Integer.toHexString(b)+" "); if(i++%10==0){ System.out.println(); } } in.close(); }
    查看全部
  • import java.io.File; import java.io.IOException; // 列出file类的一些常用操作,不如过滤、遍历等操作 public class FileUtils { public static void listDirectory(File dir) throws IOException{ // exists()方法用于判断文件或目录是否存在 if(!dir.exists()){ throw new IllegalArgumentException("目录:" + dir + "不存在"); } // isDirectory()方法用于判断File类的对象是否是目录 if(!dir.isDirectory()){ throw new IllegalArgumentException(dir + "不是目录"); } // list方法用于列出当前目录下的子目录和文件 /*String[] filenames = dir.list(); // 返回的是字符串数组 直接子的名称 不包含子目录下的内容 for (String string : filenames) { System.out.println(dir + ":\\" + string); }*/ // 如果要遍历子目录下的内容就需要构造成File对象做递归操作,File提供了返回File对象的API File[] files = dir.listFiles(); // 返回的是直接子目录(文件)的抽象 //for (File file : files) { //System.out.println(file); if(files!=null && files.length > 0){ for (File file : files) { if(file.isDirectory()){ // 递归 listDirectory(file); }else{ System.out.println(file); } } } } }
    查看全部
    6 采集 收起 来源:遍历目录

    2018-03-22

  • BufferedInputStream&BufferedOutputStream 提供了带缓存区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,这种流模式提高了IO的性能 从应用程序中把输入放入文件,相当于将一罐水倒入到另外一个罐中: FileOutputStream-->write()方法相当于一滴一滴地把水“转移”过去 DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移” BuffereOutputStream-->write()方法更方便,相当于一瓢一瓢先放入 桶中,在从桶中倒入到另外一个罐中
    查看全部
    5 采集 收起 来源:字节缓冲流

    2018-03-22

  • RandomAccessFile : java提供的对文件内容的访问 既可以读文件 也可以写文件 支持随机访问文件 可以访问文件的任意位置 (1)java文件模型 : 在硬盘上的文件是byte byte byte 存储的 是数据的集合 (2)打开文件 有两种模式 rw 读写 r只读 RandomAccessFile raf=new RandomeAccessFile(file,"rw"); 文件指针, pointer=0; (3)写方法 raf.write(int) ----> 只写一个字节 (后8位) 同时指针指向下一个位置 准备再次写入 (4)读方法 int b=raf.read(); 读一个字节 (5)文件读写完成后一定要关闭 (oracle官方说明) raf.getFilePointer()获取当前指针位置 raf.length()获取文件长度 raf.seek()把指针指定到某一位置
    查看全部
  • 一个类要序列化,就要实现Serializable接口,反过来说,不实现Serializable就不能序列化 当父类没实现Serializable接口,子类继承父类并实现Serializable接口,子类序列化时,父类的部分是没有被序列化的,那么反序列化的时候就没办法找到父类的部分,这时候怎么办呢,就调用父类构造器初始化父类部分。
    查看全部
  • 小技巧:如果要对操作进行效率对比,则可以用时间函数来进行做差比较。 代码如下: long start = System.currentTimeMillis(); ... long end = System.currentTimeMillis(); System.out.println(end - start);//单位:ms
    查看全部
  • FileReader/FileWriter:可以直接写文件名的路径。与InputStreamReader相比坏处:无法指定读取和写出的编码,容易出现乱码。只能读取与项目编码方式相同的文件 FileReader fr = new FileReader("e:\\javaio\\imooc.txt"); //输入流 FileWriter fw = new FileWriter("e:\\javaio\\imooc2.txt");//输出流 字符流:字符流分为输出流(Reader)和输出流(Writer)。操作的是文本文件。 字符处理,一次处理一个字符 字符处理底层还是基本的字节序列 InputStreamReader:完成byte流解析为char流,按照编码解析 FileInputStream in = new FileInputStream("e:\\javaio\\imoocutf8.txt"); //获取字符输入流 InputStreamReader isr = new InputStreamReader(in,"utf-8");//默认项目的编码,操作的时候,要写文件本身的编码格式 OutputStreamWriter:提供char流到byte流,按照编码处理 FileOutputStream out = new FileOutputStream("e:\\javaio\\imoocutf81.txt"); //获取字符输出流 OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8");
    查看全部
  • 字符流 (操作的是文本 文本文件) 注意默认的编码方式 1)编码问题 2)认识文本和文本文件 java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) 文件是byte byte byte 的数据序列 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化byte的存储 3)字符流(Reader Writer) 字符的处理,一次处理一个字符 字符的底层依然是基本的字节序列 4)InputStreamreader 完成byte流解析成char流 按照编码解析 OutputStreamWrite 提供char流到byte流 按照编码处理
    查看全部
  • 将String转换成byte型,使用的是String类的getByte方法,其中的参数表明使用哪种编码存储 eg: String s ="慕课网"; byte[] byte1 =s.getByte("utf-8"); 把字节(转换成int,需先转换为int的包装类Integer,再使用Integer的toHexString(b)方法)以16进制的方式显示.&oxff起到去除无效0的作用 eg: Integer.toHexString(b &oxff); 将字节码转换成字符串, String str =new String(byte,"utf-8"); 注意如果你存储的文本是以utf-8的编码形式存储的,表明这个文本只认识utf-8这种编码方式的字符串。如果是其他编码的字符串存储进了这个文本就会出现乱码。
    查看全部
    3 采集 收起 来源:文件的编码

    2018-03-22

  • 判断文件夹或文件是否存在:file.exists();返回bool值。 创建文件夹:file.mkdir(); 删除文件夹或文件:file.delete(); 判断是否是一个文件夹:file.isDirectory();返回bool值.如果不是目录或目录不存在都返回false。 判断是否是一个文件:file.isFile(); 创建文件:file.createNewFile(); 直接打印对象:System.out,println(file);打印的是路径。 文件或文件夹的名字:file.getName(); 访问父目录:file.getParent();
    查看全部
  • 字符流 之字符流的过滤器 除了具有基本的读写单个字外,更具有加强功能,可以一次性的读写一行。可以参见帮助文档,文档中的介绍更加详细,介绍到字符流的顾虑器,优化了一般的Reader的巨大开销。<br> Bufferedreader-->readLine()<br> BufferedWriter/PrintWriter 可以实现一次写一行 /**其构造需要双层的嵌套 * 看看下面是一个多么恶心的嵌套,FileReader 是对一个 Reader 进行过滤 所以,构造式需要传进来一个Reader,(我们知道Reader是一个抽象类,我们只能使用起实现子类) * 我们有知道,用的是Reader的实现子类 InputStreamReader,而InputStreamReader它有需要一个InputStream,我们最常用的 * InputStream的实现子类是FileInputStream,因为我们这里也是对文件进行操作 */ BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("e:\\Jworkspace\\code.txt"))); BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream("e:\\Jworkspace\\code2.txt"))); String line; while((line = br.readline())!=null) //一次读一行 { System.out.println(line); //一次读一行不支持换行, 必须使用println bw.write(line); //必须要单独写出黄航 bw.newLine(); bw.flush(); } br.close(); bw.close
    查看全部
  • /** * 文件拷贝,字节批量读取 * @param srcFile * @param destFile * @throws IOException * * JAVA的throw和throws區別: * http://zhidao.baidu.com/link?url=cOoyefusSFJRvXFuNK3vAVS_mGcE3jgWSy8CiwZk5y-N8Fa-m_cwRrNVEneXKkwMOTYHz8MIIS13gAz91Y4vZ_ */ public static void copyFile(File srcFile,File destFile)throws IOException{ if(!srcFile.exists()){ throw new IllegalArgumentException("文件:"+srcFile+"不存在"); } if(!srcFile.isFile()){ throw new IllegalArgumentException(srcFile+"不是文件"); } FileInputStream in = new FileInputStream(srcFile); FileOutputStream out = new FileOutputStream(destFile); byte[] buf = new byte[8*1024]; int b ; while((b = in.read(buf,0,buf.length))!=-1){ //講buf數組裡的內容讀入到該輸出流中(out) out.write(buf,0,b); out.flush();//最好加上 } in.close(); out.close(); }
    查看全部
  • public String[] list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 exists()方法用于判断文件或目录是否存在 file.list() 返回的是 字符串数组 直接子的名称,不包含子目录下的内容 file.listFiles() 返回当前目录下的所有子目录和文件的文件数组名称 ======================================== 如果要遍历子目录下的内容就需要构造成File对象做递归操作 //throws IOException 回避了IO的抛出异常 File[] files = dir.listFiles();//返回的是直接子目录(文件)的抽象 if (file!=null && files.length > 0){ for(File file:files){ if(file.isDrectory()){ listDirectory(file); }else{ System.out.println(file); } } }
    查看全部
    3 采集 收起 来源:遍历目录

    2018-03-22

  • 文件常用的基本操作(API): 1.在指定的磁盘当中查找是否存在文件 File file=new File("E:\\JAVA"); 2.判断文件是否存在 file.exists(); 3.创建文件 file.mkdirs();或者用file.creaetNewFile() 4.查看文件是否是目录,即文件夹 file.isDirectory(); 5.查看文件是否是文件 file.isFile(); 6.system.out.println(file)//直接打印该路径 7.file.getname//直接打印目录名字或者文件的名字
    查看全部
    1. RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件

    2. RandomAccessFile支持随机访问文件,可以访问文件的任意位置

    3. java文件模型:在硬盘上的文件是byte byte byte存储的,是数据的集合

    4. 打开文件有两种方式:rw(读写),r(只读)

    5. RandomAccessFile raf = new RandomAccessFile(file,"rw")

    6. 文件指针,打开文件时指针在开头pointer = 0;

    7. 写方法:raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入

    8. 读方法:int b = raf.read()--->读一个字节

    9. 文件读写完成以后一定要关闭

    10. File创建文件夹:mkdir()方法,创建文件:createNewFile()方法

    11. 指针的位置:getFilePointer()方法

    12. int i = 0x7fffffff;(最大的整数,占4个字节,write方法要写4次)

    13. raf.write(i >>> 24);//高8位 raf.write(i >>> 16); raf.write(i >>> 8); raf.write(i);

    14. 直接写一个int,使用writeInt()方法

    15. String s = "中"; byte[] gbk = s.getBytes("gbk"); raf.write(gbk); 显示文件长度:raf.length()方法

    16. 读文件,必须把指针移到文件头部:raf.seek(0);

    17. 一次性读取,把文件中的内容都读到字节数组中:byte[] buf = new byte[(int)raf.length()]; raf.read(buf); System.out.println(Arrays.toString(buf));

    查看全部

举报

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

微信扫码,参与3人拼团

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

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