java 文件传输基础

编码

(1)gbk编码,中文2个字节,英文1个字节

(2)utf-8,中文3个字节,英文1个字节

(3)java是双字节编码,是utf-16be编码,中文2字节,英文2字节

File

(1)只能用于访问目录或文件的信息(名称,大小),不能用于文件内容的访问

(2)基本API

<span style="font-family:Microsoft YaHei;font-size:18px;">		file.exists();//判断文件是否存在
		file.mkdir();//创建文件夹
		file.delete();//删除
		file.isDirectory();//目录不存在返回false
		file.isFile();
		file.createNewFile();//创建文件
		
		System.out.println(file);//打印filetoString的内容,即路径
		file.getAbsolutePath();//等价于上
		file.getName();
		file.getParentFile();//返回路径
		file.mkdirs();//创建多级目录</span>
(3)string dir.list()返回目录下的目录及文件的名称,不包括子目录下的;

  file[]  dir.listFiles()返回目录下的目录及文件,不包括子目录下的;

  遍历所有文件和目录则需要递归

(4)RandomAccessFile提供对文件的访问,可以读写

也支持随机访问文件,支持访问文件的任何位置

(1)文件模型:一个字节一个字节

(2)打开方式:"rw","r"    RandomAccessFile raf=new RandomAccessFile(file,"rw");

(3)写  raf.write(int)  一次只写一个字节,有个文件指针进行移动

(4)读  int b=raf.read()  读一个字节

(5)文件读写完要关闭

(5)IO流(输入输出流):分为字节流,字符流

(1)字节流

1.inputstream,outputstream

2.EOF是end

3.输入流的基本方法

int b=in.read();读一个字节,填充int低八位

in.read(byte[]b);读到字节数组

in.read(byteo[]b,int start,int size);读b到文件从s开始的size个,返回读到字节的个数

4.输出流的基本方法

out.write(int b);写b的低八位到byte

out.write(byte[]b);数组写入到流

out.write(byte[]b,int s,int size),把b中的s开始size写到流

5.InputSteam的子类FileInputStream

6.FileOutputStream

注:FileOutputStream out=new FileOutputStream("demo/raf3.dat");能自动生成output文件

7.DataOutputSteam/DataIntputStream是对”流“的扩展,更方便的操作int,long,字符等类型数据

   DateOutputSteam  writeInt()/writeDouble()/writeUTF()实质的FileOutStream中方法的包装

  (2)字符流

1.java的文本(char)是16位无符号整数,是字符的unicode双字节编码;

   文件是byte,byte...的数据序列

   文本文件是文本序列按照某种编码方式序列化为byte的存储

2.字符流(reader writer)

字节字符转换流:

InputStreamReader byte解析为char

OutputStreamWriter char流编码为byte流

文件读写流:

FileReader,FileWriter

字符流过滤器:

BufferedReader readLine,不识别换行符,一次读一行

BufferedWriter/PrintWriter 一次写一行

(6)对象的序列化

序列化就是把object转化为byte序列

1.ObjectOutputStream,是过滤流,序列流 wirteObjcect

   ObjectInputStream ,readObject

2. 序列化接口(Serializable)

注:transient关键字,不做jvm默认的序列化,但可以完成自定义的序列化


你可能感兴趣的:(java)