IO—常用流,API,方法

1.常量(推荐使用,Java虚拟机执行时会根据Windows或Linux等系统来解析路径,否则容易出现不兼容现象)

“;”—File.separator

“\”—File.pathSeparator

2.新建文件

注意异常捕获。

String fileName ="asd.txt";
File file= new File(FILE_PATH + fileName);
try{
    file.createNewFile();
}catch(IOException e){
    e.printStackTrace();
}

3.删除

注意文件是否存在的判断

String fileName ="asd.txt";
    File file= new File(FILE_PATH + fileName);
    if(file.exists()){
        f.delete();
    }else{
        System.out.println("文件不存在");
    }

4.创建一个文件夹

String folderName= "asd ";
File file= new File(FILE_PATH + folderName);
File.mkdir();

5.列出目录的全部文件(文件名)

File file = newFile(FILE_PATH);
String[] files =file.list();
for(int I = 0; I < files.length;i++){
    System.out.printle(files[i]);
}

6.列出目录的全部文件(文件路径)

使用File[] files = file.Files();

7.目录内的所有文件(递归)

Public Static void print(Filefile){
    if(file != null){
        if(file.isDirectory()){
            File[] fileArray = file.fileList();
            for(int i = 0; i < file.length; i++){
                print(fileArray[i]);
            }
        }
    } else{
        System.out.println();
    }
}

8.目录内的所有文件(非递归)

可以用队列,取头,如果是文件夹再放在队列后面

9.RandomAccessFile写入文件

File file = new File(FILE_PATH + fileName);
RandomAccessFile randomAccessFile = newRandomAccessFile(file, “rw”);
randomAccessFile.writeBytes(“asdasd”);
randomAccessFile.writeInt(12);
randomAccessFile.writeBoolean(true);
randomAccessFile.writeChar(‘A’);
randomAccessFile.writeFloat(1.21f);
randomAccessFile.writeDouble(12.11);
randomAccessFile.close();

都是乱码,用字节流,记得关闭流

File file = new File(FILE_PATH + fileName);
OutputStream out = new FileOutputStream(file);
String str = “收到了科涅夫”;
byte[] b = str.getBytes();
for(int i = 0; i < b.length; i++){
       out.write(b[i]);
}
out.close();

追加内容,new的时候第二个变量设为true,追加模式

File file = new File(FILE_PATH + fileName);
OutputStream out = new FileOutputStream(file, true);
//\r\n可换行
String str = “啊说的那种类型课程”;
byte[] b = str.getBytes();
for(int i = 0; i < b.length; i++){
       out.write(b[i]);
}

10.读取文件内容,先测出文件长度,以申请合适的内存。也可一个一个字节读

File file = new File(FILE_PATH + fileName);
InputStream in = new InputStream(file);
byte[] b = new byte[(int)file.length];
in.read(b);
in.close();

11.若不知道文件多大,需判断是否读到末尾,-1的时候就是末尾

File file = new File(FILE_PATH + fileName);
InputStream in = new InputStream(file);
byte[] b = new byte[1024];
int count = 0;
int temp = 0;
while((temp = in.read) !- 1){
b[count ++ ] = (byte)temp
}
in.close();


字节流和字符流的区别

字节流不用缓冲区,文件本身操作,字符流是通过缓冲区的操作文件的。注释掉关闭文件的代码,使用字节流文件会存在操作的内容,使用字符流文件是没有内容,需要刷新缓冲区。字节流比字符流好一些,硬盘上所有的文件都是字节流的形式进行传输或者保存的,包括图片。字符流内存才会形成。

 

文件的复制

一边读一边写

 

字节字符转换

OutputStreamWriter

InputStreamReader


内存操作流(通常是临时操作时使用)

ByteArrayInputStream将内容写入内存

ByteArrayOputStream将内容输出内存

 

管道流(两个线程之间的通信)

PipeOutputStream管道输出流

PipeInputStream管道输入流

 

打印流

PrintStream

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值