1.radix 文件的编码

public class radix {/*** @param args*/public static void main(String[] args) throws Exception{// TODO Auto-generated method stub/** 文本文件 就是字节序列* 可以使任意编码的字节序列*  中文机器上直接创建文件,文本文件 只认识ANSI编码,直接粘贴的全认识*  联通、联想是一种巧合,正好符合了utf-8的规则*/String s="慕课ABC";//默认gbk  中文两个字节 英文一个字节byte[] bytes1=s.getBytes();for(byte b:bytes1){ System.out.print(Integer.toHexString(b&0xff)+" ");  //c4 bd bf ce 41 42 43 }//utf-8  中文三个字节 英文一个字节System.out.println();byte[] bytes2=s.getBytes("utf-8");for(byte b:bytes2){System.out.print(Integer.toHexString(b&0xff)+" "); //e6 85 95 e8 af be 41 42 43}//JAVA是双字节编码 utf-16be 中文英文两个字节System.out.println();byte[] bytes3=s.getBytes("utf-16be");for(byte b:bytes3){ System.out.print(Integer.toHexString(b&0xff)+" "); //61 55 8b fe 0 41 0 42 0 43 }/** 当你的字节序列是某种编码时,转换为字符串时也需要用这种编码方式*/String s2=new String(bytes2);System.out.print(s2);String s3=new String(bytes2,"utf-8");System.out.print(s3);    }
}

2.FileDemo File类的使用

import java.io.File;
import java.io.IOException;public class FileDemo {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub     /** java.io.File类用于表示文件(目录)* File类只用于表示文件(目录)的信息(名称),不能直接用于文件内容的访问*///了解构造函数的情况  alt+/查看帮助File file=new File("D:\\A");if(!file.exists()) //不存在file.mkdir();  //创建目录       mkdirs创建多级目录/*elsefile.delete();   //删除目录*/      System.out.println(file.isDirectory());  //是否是目录System.out.println(file.isFile());//是否是文件//File file2=new File("D:\\A\\A1.txt");File file2=new File("D:\\A","A1.txt");if(!file2.exists()) //不存在{try{file2.createNewFile();}catch(IOException e){e.printStackTrace();}}else{file2.delete();}//常用File对象的APISystem.out.println(file);    //D:\ASystem.out.println(file.getAbsolutePath());  //D:\ASystem.out.println(file.getName());   //ASystem.out.println(file2.getName());  //A1.txtSystem.out.println(file.getParent());  //D:\System.out.println(file2.getParent());   //D:\ASystem.out.println(file.getParentFile().getAbsolutePath());  //D:\}}

3.FileUtil    遍历目录

import java.io.File;//列出File的一些常用操作如过滤.遍历等
public class FileUtil {/*** 列出指定目录下(包括其子目录)的所有文件* * @param dir* @throws Exception*/public static void listDirectoy(File dir) throws Exception {if (!dir.exists()) {throw new IllegalArgumentException("目录" + dir + "不存在");} else if (!dir.isDirectory()) {throw new IllegalArgumentException(dir + "不是目录");}// 子文件或目录名称,不包含子目录下的名称String[] names = dir.list();for (String name : names) {System.out.println(name);}// 如果要遍历子目录下的内容就需要构造成File对象做递归操作File[] files = dir.listFiles();if (files != null && files.length > 0) {for (File file : files) {if (file.isDirectory()) {listDirectoy(file); // 递归} else {System.out.println(file);}}}}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubtry {FileUtil.listDirectoy(new File("D:\\"));} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

4.RandomAccessFile类的使用

/*RandomAccessFile java提供对文件内容的访问,既可以读文件,也可以写文件。*RandomAccessFile支持随机访问文件,可以访问文件的任意位置**1)JAVA文件模型*  在硬盘上的文件时byte存储的,是数据的集合*2)打开文件 *   两种模式 rw (读写),r(只读)*RandomAccessFile raf=new RandomAccessFile(file,"rw");*文件指针,打开文件时指针在开头pointer=0;*3)写方法*raf.write(int)-->只写一个字节(后8位),同时指针指向下一个字节位置*4)读方法*raf.read()-->读一个字节*5)关闭文件*/
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
public class RandomAccessFileDemo {/*** @param args* @throws IOException */public static void main(String[] args) throws IOException {// TODO Auto-generated method stubFile demo=new File("demo");//相对路径,项目下if(!demo.exists()){demo.mkdir();}File file=new File(demo,"raf.dat");if(!file.exists()){file.createNewFile();}RandomAccessFile raf =new RandomAccessFile(file,"rw");//指针的位置System.out.println(raf.getFilePointer()); //0 //用write只写了一个字节raf.write('A');  System.out.println(raf.getFilePointer());  //1raf.write('B');System.out.println(raf.getFilePointer());  //2//可以writeInt直接写一个intint i=0x7fffffff;raf.writeInt(i);System.out.println(raf.getFilePointer());  //6String s="中";  //utf-16bebyte[] gbk=s.getBytes();raf.write(gbk);System.out.println(raf.getFilePointer());  //8//读文件,必须把指针移到头部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, -42, -48, 45]for(byte b:buf){System.out.println(Integer.toHexString(b));  //十六进制输出}String s1=new String(buf);System.out.println(s1); //AB???//关闭文件raf.close();}}

5.字节流  InputStream、OutputStream  FIleInputStream/ FIleOutputStream

BufferedInputStream/BufferedOutputoutStream

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/** IO流(输入流,输出流)* 字节流、字符流* 1.字节流* 1)InputStream、OutputStream 抽象类*    InputStream抽象了应用程序读取数据的方式*    OutputStream抽象了应用程序写出数据的方式* 2)EOF=End  读到-1就读到结尾* 3)输入流基本方法*    int b=in.read(); //读取一个字节无符号填充到整形的低8位。-1是EOF*    in.read(byte[] buf);*    in.read(byte[] buf,int start,int size);*4)输出流基本方法*    out.write(int b)//写出一个byte到流,低8位*    out.write(byte[] buf) //将byte字节数组都写入到流*    out.write(byte[] buf,int start,int size);*5) FIleInputStream继承InputStream,具体实现了在文件上读取 *6) FIleOutputStream实现了向文件中写出byte数据的方法*//** BufferedInputStream/BufferedOutputoutStream* 这两个流为IO提供了带缓冲区的操作,一般打开文件进行写入* 或读取操作时,都会加入缓冲,这种流模式提高了IO的性能* 从应用程序中把输入放入文件,相当将一缸水倒入另一个缸中* FileOutputStream-->wrie()方法相当于一滴滴转移* DataOutputStream-->writeXXx()方法,相当于一瓢瓢转移* BufferedOutputStream-->wrie()方法,相当将一瓢瓢先放入桶,再从桶倒入缸中*/public class FileInputDemo {/*读取制定文件内容,按照16进制输出*每输出10个换行*单字节读取不适合大文件*/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){//单位数前面补0System.out.print("0");}System.out.print(Integer.toHexString(b)+" ");if((i++)%10==0)System.out.println();}System.out.println();in.close();  //关闭操作}/*** 大文件适于批量读取* @param fileName* @throws IOException*/public static void printHexByByteArray(String fileName) throws IOException{FileInputStream in=new FileInputStream(fileName);byte[] buf=new byte[20*1024];/*//从In中批量读取字节,从第0个位子开始放,最多放buf.length个,返回读取字节个数int bytes=in.read(buf, 0, buf.length);//若一次性读完,说明buf足够大        for(int i=0;i<bytes;i++){if(buf[i]<=0xf){//单位数前面补0System.out.print("0");}System.out.print(Integer.toHexString(buf[i])+" ");if((i+1)%10==0)System.out.println();}*///有可能一次性读不完 int bytes=0;while((bytes=in.read(buf, 0, buf.length))!=-1){for(int i=0;i<bytes;i++){if(buf[i]<=0xf){//单位数前面补0System.out.print("0");}System.out.print(Integer.toHexString(buf[i])+" ");if((i+1)%10==0)System.out.println();}}System.out.println();in.close();}/*** 文件拷贝,批量读取,最快* @param srcFile* @param desrFile* @throws IOException*/public static void copyFile(File srcFile,File destFile) throws IOException{if(!srcFile.exists()){throw new IllegalArgumentException("文件不存在");}if(!srcFile.isFile()){throw new IllegalArgumentException("文件不存在");}FileInputStream in = new FileInputStream(srcFile);FileOutputStream out = new FileOutputStream(destFile);byte[] buf=new byte[8*1024];int bytes;while((bytes=in.read(buf, 0, buf.length))!=-1){out.write(buf, 0, bytes);out.flush();  //带缓冲区要刷新}in.close();out.close();     }/*** 文件拷贝,单字节读取,最慢* @param srcFile* @param desrFile* @throws IOException*/public static void copyFileByByte(File srcFile,File destFile) throws IOException{if(!srcFile.exists()){throw new IllegalArgumentException("文件不存在");}if(!srcFile.isFile()){throw new IllegalArgumentException("文件不存在");}FileInputStream in = new FileInputStream(srcFile);FileOutputStream out = new FileOutputStream(destFile);       int bytes;while((bytes=in.read())!=-1){out.write(bytes);}in.close();out.close();}/** 带有缓冲区的读取*/public static void copyFileByBuffered(File srcFile,File destFile) throws IOException{if(!srcFile.exists()){throw new IllegalArgumentException("文件不存在");}if(!srcFile.isFile()){throw new IllegalArgumentException("文件不存在");}BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcFile));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destFile));int b;while((b=bis.read())!=-1){bos.write(b);bos.flush();//带缓冲区要刷新}bis.close();bos.close();}/*** @param args* @throws IOException * @throws IOException */public static void main(String[] args) throws IOException  {// TODO Auto-generated method stubtry {FileInputDemo.printHex("demo\\raf.txt");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {long start=System.currentTimeMillis();FileInputDemo.printHexByByteArray("demo\\raf.txt");long end=System.currentTimeMillis();System.out.println(end-start);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//如果该文件不存在,则直接创建,如果存在,删除后删除重建//若第二个参数为true,则appendFileOutputStream out=new FileOutputStream("demo\\raf.txt");out.write('A');  //低8位out.write('B');byte[] gbk="中国".getBytes("gbk");out.write(gbk);FileInputDemo.printHex("demo\\raf.txt");FileInputDemo.copyFile(new File("demo\\raf.txt"),new File( "demo\\raf1.txt"));}}

6.DataOutputStream、DataInputStream

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;/** DataInputStream / DataOutputStream* 对“流”功能的扩展,可以更加方面的读取int,long,字符等类型数据* DataOutputStream* writeInt()/writeDouble/writeUTF()*/
public class DataInputDemo {/*** @param args*/public static void main(String[] args) throws IOException{// TODO Auto-generated method stubString file="demo\\raf.txt";//DataOutputStreamDataOutputStream dos=new DataOutputStream(new FileOutputStream(file));dos.writeInt(10);dos.writeLong(10l);dos.writeDouble(10.5);//采用utf-8编码写出dos.writeUTF("中国");//采用utf-16be编码写出dos.writeChars("中国");dos.close();//DataInputStreamDataInputStream dis=new DataInputStream(new FileInputStream(file));int i=dis.readInt();System.out.println(i);long l=dis.readLong();System.out.println(l);double d=dis.readDouble();System.out.println(d);String s=dis.readUTF();System.out.println(s);}}

7.字符流  InputStreamReader/OutputStreamReader   BufferedReader  BufferedWriter/PrintWriter

<p><span style="font-size:14px;">
/*
* 字符流
* 1)编码问题
* 2)认识文本和文本文件
*    JAVA的文本(char)是16位无符号整数,是自负的unicode编码(双字节编码)
*    文件是byte byte byte---的数据序列
*        文本文件是文本(char)序列按照某种编码方案(utf-8,.utf-16be,gbk)序列化为byte的存储
* 3)字符流(Reader Writer)
*        字符的</span>处理,一次处理一个字符</p> *    字符的底层仍然是基本的字符序列*    字符流的基本实现*    InputStreamReader 完成byte流解析为char流,按照编码解析*    OutputStreamReader 提供char流到byte流,按照编码处理* 4)FileReader FileWriter * 5)字符流的过滤器*   BufferedReader -->readLine()一次读取一行*   BufferedWriter/PrintWriter  --写一行*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
public class InputStreamReaderDemo {/*** @param args* @throws IOException */public static void main(String[] args) throws IOException {// TODO Auto-generated method stub//字节字符转换流InputStreamReader isr=new InputStreamReader(new FileInputStream("demo\\raf.txt"),"gbk");OutputStreamWriter osr=new OutputStreamWriter(new FileOutputStream("demo\\raf3.txt"));int c;/*while((c=isr.read())!=-1){System.out.print((char)c);osr.write(c);}*///批量读取char []buf=new char[8*1024];while((c=isr.read(buf, 0, buf.length))!=-1){String s=new String(buf,0,c);System.out.print(s);osr.write(buf,0, c);osr.flush();         }isr.close();osr.close();//字符流之文件读写流FileReader fr=new FileReader("demo\\raf.txt");FileWriter fw=new FileWriter("demo\\raf4.txt");char []buffer=new char[8*1024];while((c=fr.read(buffer, 0, buffer.length))!=-1){fw.write(buffer,0, c);fw.flush();         }fr.close();fw.close();//字符流的过滤器BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("demo\\raf.txt")));//BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo\\raf5.txt")));PrintWriter pw=new PrintWriter("demo\\raf5.txt");String line;while((line=br.readLine())!=null){/*bw.write(line);bw.newLine();bw.flush();*/pw.println(line);pw.flush();}br.close();pw.close();}}

8.序列化和反序列化

/*** 对象的序列化和反序列化* 1)将Object转换成byte序列,反之为对象的反序列化* 2)序列化流(ObjectOutputStream) ---->writeObject*    反序列化流(ObjectInputStream) ---->readObject* 3)序列化接口(Serializable)*    对象必须实现序列化接口,才能进行序列化,否则出现异常*    这个借口,没有任何方法,只是一个标准* 4)transient关键字  该元素不会被进行jvm默认序列化,也可以自己完成元素的序列化*    private void writeObject(java.io.ObjectOutputStream s)throws java.io.IOException{}*    private void readObject(java.io.ObjectInputStream s)throws java.io.IOException, ClassNotFoundException{}* 5)父类实现序列化接口,其子类都可进行初始化* 6)对子类对象进行序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用*/import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;public class SeriablizableDemo implements Serializable{  //声明Serializable接口,否则异常private String stu;private String stuname;private transient int stuage;@Overridepublic String toString() {return "SeriablizableDemo [stu=" + stu + ", stuage=" + stuage+ ", stuname=" + stuname + "]";}public SeriablizableDemo(String stu, String stuname, int stuage) {super();this.stu = stu;this.stuname = stuname;this.stuage = stuage;}private void writeObject(java.io.ObjectOutputStream s)throws java.io.IOException{  //ArrayList方法名粘贴s.defaultWriteObject(); //默认s.writeInt(stuage);  //自己完成}private void readObject(java.io.ObjectInputStream s)throws java.io.IOException, ClassNotFoundException {s.defaultReadObject();//默认this.stuage=s.readInt(); //自己完成 }/*** @param args* @throws IOException * @throws ClassNotFoundException * @throws FileNotFoundException */public static void main(String[] args) throws  IOException, ClassNotFoundException {// TODO Auto-generated method stubString file="demo\\raf6.txt";  //保存到此文件中//序列化ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file));SeriablizableDemo  stu=new SeriablizableDemo("张三","小",20);oos.writeObject(stu);oos.flush();oos.close();//反序列化ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));SeriablizableDemo  stu2=(SeriablizableDemo)ois.readObject();System.out.println(stu2.toString());ois.close();}}

慕课网5 文件传输基础相关推荐

  1. java io flush_《文件传输基础——Java IO流》,对其中flush方法的思考

    在学习了<文件传输基础--Java IO流> 课程后,发现自己对flush()方法的调用有很多疑惑.在查询资料和自己看源码以及动手试验之后发现有以下几个特点.如有误也请大家指正出来,一切为 ...

  2. 【恢复】慕课网《网页布局基础》学习笔记

    好久之前,最初入坑前端时的学习笔记.那时候「慕课网」的几个路径还是免费的,也有好几个跟网页布局有关的课程,其中有一个叫<网页布局基础>讲得很棒,那时候刚好喜欢上 markdown 写作,于 ...

  3. 【慕课网】前端零基础入门---步骤二:页面化妆师CSS---02-CSS文本样式

    02-CSS文本样式 第1章 字体样式 1-1 字体属性(font-family) 因此,标题可以使用Serif字体集,大段文字可以使用Sans Serif. 注意:使用常用的字体,而不要将自己安装的 ...

  4. 文件传输基础——Java IO流

    一.文件的编码 1 package com.study.io; 2 3 4 /** 5 * 测试文件编码 6 */ 7 public class EncodeDemo { 8 9 /** 10 * @ ...

  5. 慕课网前端面试06--js基础-作用域和闭包

    一.题目 this的不同应用场景,如何取值? 手写bind函数? 实际开发中闭包的应用场景,举例说明? 二.知识点 2.1作用域和自由变量 作用域 全局作用域 函数作用域 块级作用域(ES6新增) / ...

  6. 01慕课网《进击Node.js基础(一)》Node.js安装,创建例子

    版本:偶数位为稳定版本,基数为非稳定版本 - 0.6.x - 0.7.x    - 0.8.x -0.9.x    -0.10.x  -0.11.x 概念:Node.js采用谷歌浏览器的V8引擎,用C ...

  7. 局域网内文件传输速度_跨平台传输文件方案大汇总(中篇)——可能全网最全的传输方案了...

    继续上篇 第二类:利用已安装的常用软件进行跨平台传输文件, 相信大部分人电脑或者手机都会安装聊天软件类:如QQ.微信.钉钉等 还有就是常用的网盘类软件:百度网盘.天翼云盘等 也有不少人使用奶牛快传,类 ...

  8. NC工具—文件传输shell获取功能

    NC工具-文件传输&shell获取功能 前言:此文主要对NC(NETCAT)工具的文件传输和SHELL获取功能进行学习记录,不对工具简介和基本功能进行赘述,可参考我的另一篇文章Web安全工具- ...

  9. 8个免费高速文件传输工具,让你彻底告别网盘和数据线

    文章来源:平凡而诗意 作者:Jackpop 文件传输是日常使用较为频繁的一项功能,电脑与电脑.电脑与手机.手机与手机.... 以往的文件传输主要可以分为2种方式: 基于硬件:数据线.移动硬盘.U盘 基 ...

最新文章

  1. python将string转换为json_python -- 将string转换成dict的方法
  2. 计算机基础名词概念(一)
  3. MySQL5.6 yum安装
  4. 5个IO口扫描25个按键的解决方法(转帖)
  5. 【初级】String str= ac,42,123,sd Fa,c df,4,acdf,5ewRRre ;1.把字符串按,进行分割
  6. MVC学习笔记2 认识项目的目录结构与核心的DLL
  7. 【最详细】数据结构(C语言版 第2版)第八章课后习题答案 严蔚敏 等 编著
  8. [deviceone开发]-do_SlideListView的简单示例
  9. 登录样式:log4j 2,上下文,自动清除…全部不附加任何字符串!
  10. 友情提示,你该找一份假期实习啦!
  11. Web浏览器端通过https 使用mqtt通讯
  12. easyswoole数据库连接池_EasySwoole使用Mysqli
  13. matplotlib 水平堆积图
  14. 在抖音找罗永浩干掉辣条
  15. Android:Content has been consumed
  16. 使用代理爬去微信公众号_Python3WebSpider/9.5-使用代理爬取微信公众号文章.md at master · Lainton/Python3WebSpider · GitHub...
  17. 拟一维喷管流动的数值解——全亚声速等熵喷管流动的非守恒型CFD解法(MacCormack方法)
  18. 分治算法--L型骨牌棋盘覆盖
  19. electron热更新
  20. 大数据学习路线(完整详细版)

热门文章

  1. u-boot启动流程简图 --木草山人
  2. The Tao of Programming
  3. 安卓应用无响应,你真的了解吗?
  4. dnf史诗计算机手机版,DNF手游终于要来了!可端游的史诗级装备该咋办…
  5. python学习 day013打卡 内置函数
  6. JDK9-G1 -XX:ParallelGCThreads 默认选择源码解析
  7. python :SyntaxError: Non-ASCII character '\xe5' in file 错误
  8. PHP Fatal error: Uncaught Error: Class ‘\Elasticsearch\Serializers\SmartSerializer‘ not found in /h
  9. 淘宝接口 TopAPi
  10. 交易员怎样于牛市中基于KDJ进行选股