1、File类常见方法:

创建:

boolean createNewFile():在指定位置创建文件

如果该文件已经存在,则不创建,返回false,和输出流不一样,输出流对象一建立就创立文件,而且文件已经存在会发生覆盖

boolean mkdir():创建文件夹,只能创建一级文件夹

boolean mkdirs():创建多级文件夹

renameTo():

删除:

boolean delete():删除失败,返回false

void deleteOnExit():在程序退出时删除指定文件

判断:

boolean exists():判断文件是否存在

boolean isFile():

boolean isDirectory():

在判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在,通过exists()方法进行判断

isHidden():是否为隐藏文件

isAbsolute():是否为绝对路径

获取信息:

getName():

String getPath():

getParent():返回的是绝对路径中的文件父目录,如果获取的是相对路径,则返回空,如果相对路径中有上一层目录,那么该目录就是返回结果

String getAbsolutePath():

lastModified():

length():返回文件长度

Static File[] listRoots():返回系统中所有的盘符

String [] list():返回该路径下所有的文件和目录——FilenameFilter()

File[] listFiles():

Properties类

存取配置文件

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Properties props=new Properties();
FileInputStream fis=new FileInputStream("props.txt");
props.load(fis); Set<String> keys=props.stringPropertyNames();
for(String key:keys){
String value=props.getProperty(key);
System.out.println(key+":"+value);
} FileOutputStream fos=new FileOutputStream("props.txt");
props.setProperty("name", "hello");
props.store(fos, null);
}

打印流

字节打印流:
PrintStream

构造函数可以接收的参数类型

1.file对象

2.字符串路径

3.字节输出流:OutputStream

字符打印流
PrintWriter

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in)); PrintWriter pw=new PrintWriter(System.out,true);
String line= br.readLine();
pw.println(line.toUpperCase());
pw.flush(); pw.close();
br.close();
/*while(!"over".equals(line)){
pw.print(line.toUpperCase());
line=br.readLine();
}*/
}

合并流
SequenceInputStream

对象序列化(被操作的对象需要实现Serializable接口)

ObjectInputStream,ObjectOutputStream

        FileOutputStream fos = new FileOutputStream("person.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
Person person=new Person("lvjy",30);
oos.writeObject(person);
oos.close(); FileInputStream fis = new FileInputStream("person.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Person p=(Person) ois.readObject();
System.out.println(p);
ois.close();

自定义版本号:public staitc final long serialVersionUID=42L

新的类还能操作曾经被序列化的对象

只能把堆里面的数据序列化,但是不能把其他区域中的数据序列化(static变量不能序列化)

对非静态的成员也不想序列化的话,可以在序列化对象相关的成员变量加上trainsient关键字

管道流

PipedInputStream,PipedOutputStream

package com.travelsky.io;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream; public class PipedStreamDemo { @SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
PipedInputStream in=new PipedInputStream();
PipedOutputStream out = new PipedOutputStream();
in.connect(out); PipedOut po = new PipedOut(out);
PipedIn pi = new PipedIn(in); new Thread(po).start();
new Thread(pi).start();
} }
class PipedOut implements Runnable{
private PipedOutputStream pos;
public PipedOut(PipedOutputStream pos) {
super();
this.pos = pos;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("piped out sleep");
try {
Thread.sleep(5000);
pos.write("hello,world".getBytes());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
class PipedIn implements Runnable{
private PipedInputStream pis; public PipedIn(PipedInputStream pis) {
super();
this.pis = pis;
} @Override
public void run() {
// TODO Auto-generated method stub
byte[] buf =new byte[1024];
try {
System.out.println("piped in wait");
int len=pis.read(buf);
String content = new String(buf,0,len);
System.out.println(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

RandomAccessFile

该类不算是IO体系中的子类,而是直接继承自Object

但是它是IO包中成员,因为它具备读和写功能

内部封装了一个数组,而且通过指针对数组的元素进行操作。

可以通过getFilePointer获取指针位置,同时可以通过seek改变指针的位置

通过构造函数可以看出,该类只能操作文件

RandomAccessFile(String name,String mode)  

mode:r,rw,rws,rwd

write方法只写出int类型的最低8位

操作基本数据类型的流对象:DataStream

DataInputStream,DatOutputStream

readInt(),readBoolean,readDouble()

writeInt(),writeBoolean,writeDouble()

writeUTF(),readUTF():加强版的UTF-8

操作字节数组

ByteArrayInputStream:

在构造的时候,需要接收数据源,而且数据源是一个字节数组

ByteArrayOutputStream

在构造的时候,不用定义数据目的,因为该对象中已经内部封装了一个可变长度的字节数组。这就是数据目的地。因为这两个流对象都操作的是数组,并没有使用系统资源,所以不用进行close关闭

操作字符数组

CharArrayReader与CharArrayWriter

操作字符串

StringReader,StringWriter

Tomcat默认的解码方式为ISO8859-1

get方式提交:必须手工转换字符编码

post方式提交:可以通过setCharacterEncoding()函数来设定编码方式

UTF-8修改版:

单字节:0xxxxxxx

两字节:110xxxxx 10xxxxxx

三字节:1110xxxx 10xxxxxx 10xxxxxx

File类相关操作的更多相关文章

  1. C# File类的操作

    原文:C# File类的操作 File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件.File类方法的参 ...

  2. .Net File类的操作

    //File类的常用操作方法 //File类的常用操作方法 //File.Exists //检测是否存在该文件 Exists //File.Create //创建一个文件 Create //File. ...

  3. file类简单操作

    file类可表示文件或文件夹 import java.io.File; import java.io.FilenameFilter; import java.io.IOException; impor ...

  4. 大数据学习——scala类相关操作

    1 类的定义 package com /** * Created by Administrator on 2019/6/3. */ //类并不用声明为public. class Person { // ...

  5. Java 输入/输出——File类

    File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建 ...

  6. Java IO学习--File类

    一.File类 File类具备一定的误导性,可能容易认为它指代的是文件,实际并非如此,它既能代表一个特定文件的名称,又能表示一个目录下一组文件的名称.简而言之,File类是文件或者目录路径名的抽象表示 ...

  7. IO编程之File类

    File类是java.io包下代表与平台无关的文件及目录,程序操作文件和目录都可以通过File类来完成.值得指出的是,不管是文件还是目录都可以通过File类来操作.File能新建.删除.重命名文件和目 ...

  8. File类和RandomAccessFile类

    目录 File类     File类常用操作     (1)创建文件     (2)删除文件     (3)创建文件夹     (4)列出指定目录全部文件     (5)删除目录 RandomAcce ...

  9. Java IO详解(一)------File 类

    File 类:文件和目录路径名的抽象表示. 注意:File 类只能操作文件的属性,文件的内容是不能操作的. 1.File 类的字段 我们知道,各个平台之间的路径分隔符是不一样的. ①.对于UNIX平台 ...

随机推荐

  1. 剑指offer(59)按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目分析 这道题还是需要画图分析,不然不好找 ...

  2. 面试神体验之:get和post的区别

    由于本文是用markdown在本地编辑的,粘贴到本地的时候出现了一些页面bug,所以只好贴进代码里面,一些链接失效,望见谅 Get和POST的区别 都9102年了,你们还在问get和post的区别?是 ...

  3. servlet登录界面进行用户名和密码验证

    一.建立LoginServlet项目并建立如下目录 二.在Login.html中编写登录界面代码 三.在css文件中新建login.css文件 四.在src文件中添加LoginServlet.java ...

  4. websocket是如何进行建立连接与通信的?(简单理解)

    握手过程: websocket-client端通过ws协议向websocket-server端发起连接请求前,首先在自己的请求头中添加Sec-Websocket-Key键值对,值为根据自己账号通过一定 ...

  5. Linux 查看进程之PS命令

    要对进程进行检测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程运行状态.Linux 系统中 我们可以使用 ps 命令查看进程. ps 命令介绍       ps(process stat ...

  6. HBase和MongoDB的区别

    Mongodb用于存储非结构化数据,尤其擅长存储json格式的数据.存储的量大概在10亿级别,再往上性能就下降了,除非另外分库.Hbase是架构在hdfs上的列式存储,擅长rowkey的快速查询,但模 ...

  7. DAY7 字符编码和文件操作

    一.软件与python解释器打开文件的方法 1.软件打开文件读取数据的流程: 1. 打开软件 2. 往计算机发生一个打开文件的指令,来打开文件 3. 读取数据渲染给用户(存取编码不一致:乱码) 2.p ...

  8. Ubuntu 停止 mydesktop 服务

    systemctl list-unit-files | grep mydesktop systemctl disable mydesktop.service

  9. 《HTTP 权威指南》笔记:第十五章 实体与编码

     如果把 「HTTP 报文」想象为因特网货运系统的「箱子」,那么「HTTP 实体」就是报文中的实际的「货物」. 其中,实体又包含了「实体首部」 和 「实体主体」,实体首部用于描述各种参数,实体主体就 ...

  10. LeetCode--018--四数之和(java)

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...