> Java > java지도 시간 > 본문

이오류

巴扎黑
풀어 주다: 2017-06-26 11:37:39
원래의
1884명이 탐색했습니다.

文件编码:

①gbk编码:中文占用2个字节,英文占用1个字节

②utf-8编码:中文占用3个字节,英文占用1个字节
로그인 후 복사
③java是双字节编码 utf-16be,中文占用2个字节,英文占用2个字节
로그인 후 복사
④当你的字节序列是某种编码时,若想把该字节序列变成字符串,也必须用这种编码方式,不能直接使用String str = new String(byteStr);否则系统会使用默认的编码,从而出现乱码
로그인 후 복사
⑤文本文件就是字节序列,可以是任意编码的字节序列,如果我们在中文机器上直接创建文本文件,则该文本文件只认识ansi编码
로그인 후 복사
在eclipse项目下创建的项目可以指定项目的编码形式。eclipse默认的“GBK”编码不能识别“utf-8”的文件。若是将eclipse中创建的“utf-8”文件复制到电脑上是可以识别的,但是!在电脑本地上创建的“utf-8”文件,电脑识别不了
로그인 후 복사

File类常用API的使用:

java.io.File类在Java中表示文件或目录。
로그인 후 복사
File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问。
로그인 후 복사
创建File对象:File file=new File(String path);
로그인 후 복사
两种创建“日记1.txt”文件的方法
로그인 후 복사
<br>
로그인 후 복사
로그인 후 복사
可以通过 alt+/ 查看构造函数
로그인 후 복사
注意:盘符后跟双斜杠 \\ 或者 /
로그인 후 복사

1. file.seperater();获取系统分隔符
로그인 후 복사
2. file.exists();是否存在.存在返回true,不存在返回false
로그인 후 복사
3. file.mkdir();或者file.mkdirs();创建目录或多级目录。
로그인 후 복사
4. file.isDirectory()或者file.isFile()判断是否是目录或者是否是文件。是返回true,不是为false
로그인 후 복사
5. file.delete();删除文件/文件夹。
로그인 후 복사
6. file.createNewFile();创建新文件。
로그인 후 복사
7. file.getName()获取文件名称。
로그인 후 복사
8. file.getAbsolutePath()获取绝对路径。
로그인 후 복사
9. file.getParent();获取父级绝对路径
로그인 후 복사

file类的遍历目录

File对象 dir
로그인 후 복사
 dir.isDirectory() 判断当前路径是否为目录
로그인 후 복사
dir.list()返回String[],用于列出当前目录下的子目录和文件(不包含子目录下的名称)
로그인 후 복사
如果要遍历子目录下的内容就需要构造成File对象做递归操作
로그인 후 복사
File files = dir.listFiles();//返回的是直接子目录(文件)的抽象
로그인 후 복사

RomdonAccessFile基本操作

Java提供的对文件内容的访问,可以读内容也可以写内容
로그인 후 복사
支持随机访问文件,可以访问文件的任意位置
로그인 후 복사
(1)Java文件模型
로그인 후 복사
在硬盘上是byte bytebyte存储的,是数据的集合
로그인 후 복사
(2)打开文件
로그인 후 복사
有两种模式“rw”读写 和“r”只读
로그인 후 복사
RondomAccessFile raf = new RondomAccessFile(file,”rw”);
로그인 후 복사
文件指针  打开文件时指针在开头pointer = 0;
로그인 후 복사
(3) 写方法
로그인 후 복사
Raf.writer(int)---à只写一个字节(后八位),同时指针指向下一个位置,准备再次写入
로그인 후 복사
(4)读方法
로그인 후 복사
int b = raf.read()--à从指针在的位置读一个字节
로그인 후 복사
(5)文件读写完之后一定要关闭
로그인 후 복사
(6)代码
로그인 후 복사
public static void main(String[] args) throws IOException{
로그인 후 복사
    File demo = new File("demo");//新建一个File对象,如果没有写绝对路径则是默认在项目路径下
로그인 후 복사
    if(!demo.exists())
로그인 후 복사
        demo.mkdir();
로그인 후 복사
    File file = new File(demo,"raf.dat");//在demo下创建文件raf.dat
로그인 후 복사
    if(!file.exists())
로그인 후 복사
        file.createNewFile();//在项目下新建了demo文件夹,其中有raf.dat文件
로그인 후 복사
    <br>
로그인 후 복사
    RandomAccessFile raf = new RandomAccessFile(file,"rw")//创建读内容的对象raf
로그인 후 복사
    //指针的位置,写一个字节指针移一位
로그인 후 복사
    System.out.println(raf.getFilePointer());   //开始时在控制台输出0
로그인 후 복사
raf.write('A');//只写了一个字节(后8位)
로그인 후 복사
System.out.println(raf.getFilePointer());//输出1
로그인 후 복사
int i = 0x7fffffff;//用write方法每次只能写一个字节,若要把i写进去就得写4次
로그인 후 복사

 

<br>
로그인 후 복사
로그인 후 복사
此时输出6
로그인 후 복사
raf.writeInt(i);//直接写一个int
로그인 후 복사
System.out.println(raf.getFilePointer());//输出10
로그인 후 복사
    String s = "中";
로그인 후 복사
    byte[] gbk = s.getBytes("gbk");
로그인 후 복사
    raf.write(gbk);
로그인 후 복사
System.out.println(raf.getFilePointer());//输出12 中文两个字节
로그인 후 복사
 <br>
로그인 후 복사
로그인 후 복사
로그인 후 복사
    //读文件,必须把指针移到头部
로그인 후 복사
    ref.seek(0);
로그인 후 복사
    //一次性读取,把文件中的内容都读到字节数组中
로그인 후 복사
    byte[] buf = new byte[(int)raf.length];
로그인 후 복사
    raf.read(buf);
로그인 후 복사
System.out.println(Array.toString(buf));
로그인 후 복사
 <br>
로그인 후 복사
로그인 후 복사
로그인 후 복사
//用十六进制包装   重新输入
로그인 후 복사
    for(byte b:buf){
로그인 후 복사
        System.out.println(Integer.toHexString(b & 0xff)+"");
로그인 후 복사
}
로그인 후 복사
로그인 후 복사
 <br>
로그인 후 복사
로그인 후 복사
로그인 후 복사
//最后一定要加上close()方法
로그인 후 복사
}
로그인 후 복사
로그인 후 복사

五、字节流

读写文件时以字节为单位
로그인 후 복사
1) 有两个父类:InputStream和OutputStream
로그인 후 복사
   InputStream是抽象类,抽象了应用程序读取数据的方式
로그인 후 복사
   OutputStream抽象了应用程序写出数据的方式
로그인 후 복사
2) EOF = End 或 读到-1就读到结尾
로그인 후 복사
3) 输入流基本方法(in是输入流对象)
로그인 후 복사
   int b = in.read();//读取一个字节无符号填充到int低八位,-1是EOF
로그인 후 복사
   in.read(byte[] buf)  读取数据填充到字节数组buf
로그인 후 복사
   int.read(byte[] buf,int start,int size)  读取数据到字节数组buf,从buf的start位置开始存放size长度的数据
로그인 후 복사
4) 输出流基本方法(进行写的操作)
로그인 후 복사
    out.write(int b) 写出一个byte到流,b的低八位
로그인 후 복사
    out.write(byte[] buf) 将buf字节数组都写入到流
로그인 후 복사
    out.write(byte[] buf,int start,int size) 字节数组buf从start位置开始写size长度的字节到流
로그인 후 복사

위 내용은 이오류의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿