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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 5.字符流:字符流分为输出流(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"); FileReader/FileWriter:可以直接写文件名的路径。与InputStreamReader相比坏处:无法指定读取和写出的编码,容易出现乱码。 FileReader fr = new FileReader("e:\\javaio\\imooc.txt"); //输入流 FileWriter fw = new FileWriter("e:\\javaio\\imooc2.txt");//输出流
    查看全部
  • 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");
    查看全部
  • 这里为什么还要String st=new String(s,0,c); 直接打印s的结果是一样的啊
    查看全部
  • 2.字符流 (操作的是文本 文本文件) 注意默认的编码方式 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流 按照编码处理 FileInputStream in=new FileInputStream("e:\\javaio\\imooc.txt"); InputSreamStreamReader isr=new InputStreamReader(in);//默认项目编码 gbk 可改成 utf-8 int c; while((c=isr.read())!=-1){ syso -> char(c) } //一次读一个字符数组 char[] buffer=new char[8*1024]; int c; while ((c=isr.read(buffer,0,buffer.length))!=-1){ 批量读取放入buffer这个字符数组 从第0个位置开始防止,最多放置buffer.length个 String s=new String(buffer,0,c); syso -> s; }
    查看全部
  • public static void main(String[] args)throws IOException { FileInputStream in = new FileInputStream("e:\\javaio\\imoocutf8.txt"); InputStreamReader isr = new InputStreamReader(in,"utf-8");//默认项目的编码,操作的时候,要写文件本身的编码格式 FileOutputStream out = new FileOutputStream("e:\\javaio\\imoocutf81.txt"); OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8"); /*int c ; while((c = isr.read())!=-1){ System.out.print((char)c); }*/ char[] buffer = new char[8*1024]; int c; /*批量读取,放入buffer这个字符数组,从第0个位置开始放置,最多放buffer.length个 返回的是读到的字符的个数 */ while(( c = isr.read(buffer,0,buffer.length))!=-1){ String s = new String(buffer,0,c); System.out.print(s); osw.write(buffer,0,c); osw.flush(); } isr.close(); osw.close(); }
    查看全部
  • RandomAccessFile的特点
    查看全部
  • int c=dis.read();不带参数的read返回的是读到的字节内容; int c=dis.read(buf,0,buf.length)带参数的read返回的是字节的总长度; 当全部读完后返回的都是是-1;
    查看全部
    1 采集 收起 来源:字节缓冲流

    2016-06-29

  • readInt readLong 方法都是对FileInputStream方法的包装 DataOutputStream/DataInputStream 对“流”功能的扩展,可以更加方便的读取 int,long, 字符等类型数据 DataOutputStream:使用FileOutputStream构造出来,通过包装FileOutput,可以调用FileOutput类的write方法来构造新的更方便的写方法: new DataOutputStream(new FileOutptStream(file)) wrieteUTF()采用utf-8编码写出字符串 用utf-16be写出字符串,或字符串数组 写完之后一定要关闭流 数据输入输出流: DataInputStream、DataOutputStream 是对“流”功能的扩展,方便读写 DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeLong(10l);字母l dos.writeDouble(10.5); //采用utf-8编码写出 dos.writeUTF("中国"); //采用utf-16be编码写出 dos.writeChars("中国");
    查看全部
  • list()方法用于列出当前文件下的子目录和文件。
    查看全部
    0 采集 收起 来源:遍历目录

    2016-06-29

  • 如果我们在中文机器上直接创建文本文件,那么文本文件默认以ansi编码来保存文字信息”。
    查看全部
    0 采集 收起 来源:遍历目录

    2016-06-29

  • file类只用于表示文件(目录)的信息(名称,大小等),不能用于文件内容的访问。
    查看全部
  • 文本文件就是字节序列,可以是任意编码的字节序列。如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码。
    查看全部
    1 采集 收起 来源:文件的编码

    2016-06-29

  • /**<br> * 文件拷贝,字节批量读取<br> * @param srcFile<br> * @param destFile<br> * @throws IOException<br> * <br> * JAVA的throw和throws區別:<br> * http://zhidao.baidu.com/link?url=cOoyefusSFJRvXFuNK3vAVS_mGcE3jgWSy8CiwZk5y-N8Fa-m_cwRrNVEneXKkwMOTYHz8MIIS13gAz91Y4vZ_<br> */<br> public static void copyFile(File srcFile,File destFile)throws IOException{<br> if(!srcFile.exists()){<br> throw new IllegalArgumentException("文件:"+srcFile+"不存在");<br> }<br> if(!srcFile.isFile()){<br> throw new IllegalArgumentException(srcFile+"不是文件");<br> }<br> FileInputStream in = new FileInputStream(srcFile);<br> FileOutputStream out = new FileOutputStream(destFile);<br> byte[] buf = new byte[8*1024];<br> int b ;<br> while((b = in.read(buf,0,buf.length))!=-1){<br>//这里的b在全部读完之前赋值为要读取的长度,读完之后再执行b=in.read(buf,0,buf.length)的话会赋值为-1 //講buf數組裡的內容讀入到該輸出流中(out)<br> out.write(buf,0,b);<br> out.flush();//最好加上<br> }<br> in.close();<br> out.close();<br> <br> }
    查看全部
  • 1、byte 类型 8 位,int 类型 32 位,为了避免数据转换错误,通过 & 0xff 将高 24 位清零 2、long time = System.currentTimeMillis() 当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量) 3、is.read() 单字节适合读取 小 文件 is.read(byte[] bytes,int star,int size) 字节数组适合读取 大 文件 读取文件最常用的是批量读取int bytes = fis.read(buf, 0 , buf.length); FileInputStream文件输入 单字节输入即不用数组。 /** * 批量读取,对大文件而言效率高,也是我们最常用的读文件的方式 * @Inparam fileName * @throws IOException */ 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(); } }
    查看全部
  • InputStreamReader和OutputStreamWriter针对的是文本文件 而FileInputStream和FileOutputStream、DataInputStream和DataOutputStream、BufferedInputStream和BufferedOutputStream则针对所有文件进行操作
    查看全部

举报

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

微信扫码,参与3人拼团

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

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