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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • FileReader和FileWriter的使用 public static void main(String[] args) throws IOException { FileReader fr = new FileReader("F:\\IO流\\file读写操作\\fr.txt"); FileWriter fw = new FileWriter("F:\\IO流\\file读写操作\\fw.txt"); // 加上true是追加内容 FileWriter fw2 = new FileWriter("F:\\IO流\\file读写操作\\fw_true.txt", true); // 单个写入 fw2.write("完成"); // 成组写入 char[] buffer = new char[1024]; int c; while ((c = fr.read(buffer, 0, buffer.length)) != -1) { System.out.print(buffer); fw.write(buffer, 0, c); fw.flush(); } fr.close(); fw.close(); fw2.close(); }
    查看全部
  • InputStreamReader和OutputStreamWriter的使用 public static void main(String[] args) throws IOException { // 读出文件内容 使用默认编码方式,其他编码方式可加在文件路径后面加上用双引号括起来 InputStreamReader isr = new InputStreamReader(new FileInputStream( "F:\\IO流\\IsrAndOsw\\isr.txt"),"gbk"); // 写入文件内容 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream( "F:\\IO流\\IsrAndOsw\\osw.txt")); //覆盖写入 osw.write("你好"); //不覆盖写入,加入后面 osw.append("世界"); // 一次读取一个字符 /*int c; while ((c = isr.read()) != -1) { System.out.print((char) c); }*/ char[] buffer = new char[1024]; // 批量读取,放入buffer这个字符数组 while ((isr.read(buffer)) != -1) { osw.write(buffer); osw.flush(); } isr.close(); osw.close(); }
    查看全部
  • 字符流 1.编码问题 2.认识文本和文本文件 Java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) 文件是byte byte byte…的数据序列 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储序列 3.字符流(Reader Writer)操作的是文本文件 字符的处理,一次处理一个字符 字符的底层仍然是基本的字节序列 字符流的基本实现 InputStreamReader 完成byte流解析成为char流,按照编码解析 OutputStreamWriter 提供char流到byte流,按照编码处理 FileReader/FileWriter 字符流的过滤器 BufferedReader readline一次读一行 BufferedWrite/PrintWriter--一次写一行
    查看全部
  • // 单字节不带缓冲进行拷贝 public static void copyFileByByte(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); int b; while ((b = in.read()) != -1) { out.write(b); out.flush();// 最好加上 } in.close(); out.close(); }
    查看全部
    0 采集 收起 来源:字节缓冲流

    2018-03-22

  • BufferedInputStream和BufferedOutputStream的使用 // 利用带缓冲的字节流拷贝文件 public static void copyFileByBuffer(File srcFile, File destFile) throws IOException { if (!srcFile.exists()) { throw new IllegalArgumentException("文件" + srcFile + "不存在"); } if (!srcFile.isFile()) { throw new IllegalArgumentException(srcFile + "不是文件"); } BufferedInputStream in = new BufferedInputStream(new FileInputStream( srcFile)); BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(destFile)); int b; while ((b = in.read()) != -1) { out.write(b); out.flush();// 刷新缓冲区 } in.close(); out.close(); }
    查看全部
    0 采集 收起 来源:字节缓冲流

    2018-03-22

  • DataInputStream的用法 public static void main(String[] args) throws IOException { String file = "F:/IO流/FileInputStreamAndFileOutputStream/dos.txt"; DataInputStream dis = new DataInputStream(new FileInputStream(file)); int i = dis.readInt(); System.out.println(i); i = dis.readInt(); System.out.println(i); double b = dis.readDouble(); System.out.println(b); String s = dis.readUTF(); System.out.println(s); char c = dis.readChar();//只读取一个字节 System.out.println(c); dis.close(); }
    查看全部
  • DataOutputStream的用法 public static void main(String[] args) throws IOException { String file = "F:/IO流/FileInputStreamAndFileOutputStream/dos.txt"; DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeInt(-10); dos.writeDouble(12.22); // 采用utf-8编码写出 dos.writeUTF("中国"); // 采用utf-16be编码写出 dos.writeChars("AB"); dos.close(); }
    查看全部
  • utf-16 中文2个字节,英文2个字节 utf-8 中文3个字节,英文1个字节 GBK 中文2个字节,英文1个字节
    查看全部
    0 采集 收起 来源:文件的编码

    2016-09-26

  • // 不带缓冲的批量拷贝文件 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) { out.write(buf, 0, b); out.flush();// 最好加上 } in.close(); out.close(); }
    查看全部
  • FileOutputStream的用法 public static void main(String[] args) throws IOException { // 如果该文件不存在,则直接创建,如果存在,则在后边追加内容 // FileOutputStream fos=new FileOutputStream("F:\\IO流\\FileInputStreamAndFileOutputStream/fos.txt",true); // 如果该文件不存在,则直接创建,如果存在,删除后创建 FileOutputStream fos = new FileOutputStream("F:\\IO流\\FileInputStreamAndFileOutputStream/fos.txt"); fos.write('A');// 写出了'A'的低8位 fos.write('B');// 写出了'B'的低8位 int a = 10;// write只能写8位,那么写一个int需要写4次,每次8位 fos.write(a >>> 24); fos.write(a >>> 16); fos.write(a >>> 8); fos.write(a); byte[] gbk = "中国".getBytes(); fos.write(gbk); fos.close(); }
    查看全部
  • FileInputStream批量读取 long start = System.currentTimeMillis();获得系统时间 // 批量读取,对大文件而言效率高,也是我们最常用的读取方式 public static void printHexByByteArray(String fileName) throws IOException { FileInputStream in = new FileInputStream(fileName); byte[] buf = new byte[20 * 1024]; // 从in中批量读取字节,放入到buf这个字节数组中, 从0个位置开始放,最多放buf.length个 返回的是读到的字节的个数 int bytes = in.read(buf, 0, buf.length); // 一次性读完,说明字节数组足够大 int j = 1; for (int i = 0; i < bytes; i++) { if (buf[i] <= 0xf) { System.out.println("0"); } // 将整型b转换成16进制表示的字符串 System.out.print(Integer.toHexString(buf[i]) + " "); if (j++ % 10 == 0) { System.out.println(); } } int bytes2 = 0, k = 1; while ((bytes2 = in.read(buf, 0, buf.length)) != -1) { for (int i = 0; i < bytes2; i++) { // byte类型为8位,int类型32位,为了避免数据转换错误,通过&0Xff将高24位清零 System.out.print(Integer.toHexString(buf[i] & 0xff) + " "); if (k++ % 10 == 0) { System.out.println(); } } } in.close(); }
    查看全部
  • FileInputStream的使用 // 读取指定文件内容,按照16进制输出到控制台,并且每输出10个byte换行,单字节读取不适合大批量文件读取。 public static void printHex(String fileName) throws IOException { // 把文件作为字节流进行读操作 FileInputStream in = new FileInputStream(fileName); int b, i = 1; while ((b = in.read()) != -1) { if (b <= 0xf) { // 单个数前面补0 System.out.print("0"); } // 将整型b转换成16进制表示的字符串 System.out.print(Integer.toHexString(b) + " "); if (i++ % 10 == 0) { System.out.println(); } } in.close(); }
    查看全部
  • 1.InputStream:抽象了应用程序读取数据的方式 OutputStream:抽象了应用程序写出数据的方式 2.EOF=End 读到-1就读到结尾 3.输入流基本方法 int b=in.read();读取一个字节无符号填充到int低8位。-1是EOF in.read(byte [] buf) 读取数据填充到字节数组buf in.read(byte [] buf,int start,int size) 读取数据到字节数组buf,从buf的start位置开始存放size长度的数据。 4.输出流基本方法: out.write(int b)写出一个byte到流,b的低8位 out.write(byte [] buf) 将buf字节数组都写入到流 out.write(byte[] buf,int start,int size) 5.FileInputStream-具体实现了在文件上读取数据 6.FileOutputStream实现了向文件中写出byte数据的方法 7.DataOutputStream/DataInputStream 对”流”功能的扩展,可以更加方便的读取int,long,字符等类型的数据 DataOutputStream writeInt()/writeDouble()/WriteUTF() 8.BufferedInputStream/BufferedOutputStream 这两个流类为IO提供了带缓冲的操作,一般打开文件进行写入 或读取操作时,都会带上缓冲,这种流模式提高了IO的性能 从应用程序中把输入放入文件,相当于把一缸水倒入另一缸中: FileOutputStream—>write()方法相当于一滴一滴的把水“转移过去“ DataOutputStreamwriteXxx()方法会方便一点,相当于一瓢一瓢把水“转移过去“ BufferedOutputStream—>write()方法更方便,相当于一瓢一瓢先放入桶中,再从桶中到入到另一个缸中。
    查看全部
  • RandomAccessFile的使用 File demo = new File("F:\\IO流\\RandomAccessFile的使用"); if (!demo.exists()) demo.mkdir(); File file = new File(demo, "raf.txt"); if (!file.exists()) file.createNewFile(); RandomAccessFile raf = new RandomAccessFile(file, "rw"); // 指针位置 System.out.println(raf.getFilePointer()); // 只写了一个字节 raf.write('A'); int i = 0X7fffffff; // 用write方法每次只能写进去一个字节,如果要把i写进去就得写四次 raf.write(i >>> 24);// 高8位 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); // 读文件,必须把指针移到头部 raf.seek(0); // 一次性读取,把文件中的内容都读到字节数组中 byte[] buf = new byte[(int) raf.length()]; raf.read(buf); System.out.println(Arrays.toString(buf)); String s1 = new String(buf); System.out.println(s1); for (byte b : buf) { System.out.print(Integer.toHexString(b & 0Xff) + " "); } raf.close();
    查看全部
  • RandomAccessFile java提供的对文件内容的访问既可以读文件,也可以写文件 RandomAccessFile 支持随机访问文件,也可以访问文件的任意位置 1.Java文件模型 在硬盘上的文件是byte byte byte 存储的,是数据的集合 2.打开文件 有两种方式”rw”(读写) ”r” (只读) RandomAccessFile raf=new RandomAccessFile(File,”rw”) 文件指针,打开文件时指针在开头pointer=0; 3.写方法 raf.write(int)-只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 4.读方法 Int b=raf.read()-读一个字节 5.文件读写完成以后一定要关闭,否者会发生错误情况。
    查看全部

举报

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

微信扫码,参与3人拼团

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

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