java文件类file
jdk6及以前,唯一的访问文件及目录的方式:java.io.file
file类与os无关,但会受到os权限控制
file类不涉及到文件具体内容,只涉及到属性
方法名 | 用法 |
---|---|
isDirectory | 是否是目录 |
isFile | 是否是文件 |
getName | 获取文件名字 |
getParent | 获取上一层目录路径 |
getPath | 获取这个文件的全路径 |
length | 获取文件的大小 |
lastModified | 返回文件最后一次修改时间 |
listFiles | 列出当前目录的所有子文件,但不包括子目录下的文件,即不会递归显示; |
delete | 删除文件或者目录 |
java 7提出了nio包,对java.io.file类的补充,包括复制,移动,相对路径,递归遍历等
java IO包
java读写文件,只能以流(数据流)的形式进行读写,因为文件很大,没有那么大的内存
java.io包中
节点类
包装类
1 Byte(字节)= 8 Bits (位) 即 00000000 — 11111111
节点类:直接操作文件类
-InputStream,OutputStream(字节)
FileInputStream,fileoutputstream
-reader,writer(字符)
filereader,filewriter
jdk 1.6 和 jdk 1.7的写法
写文件代码:
public static void writefile() {
String path = "C:\\\\Users\\\\Administrator\\\\Desktop\\\\abc.txt";
try(BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path)))) {
bw.write("123123");
bw.newLine();
bw.write("hehehe");
bw.newLine();
} catch (IOException e){
e.printStackTrace();
}
// FileOutputStream fos = null; //节点类,负责写字节
// OutputStreamWriter osw = null; //转化类,负责字符到字节的转换
// BufferedWriter bw = null; //装饰类,负责写字符到缓冲区
// try {
// fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\abc.txt"); //往哪个文件写
// osw = new OutputStreamWriter(fos,"utf-8"); //用什么编码去写
// bw = new BufferedWriter(osw); //添加一个缓冲区
//
// bw.write("这是一个悲伤的故事");
// bw.newLine();//换行
// bw.write("over");
// bw.newLine();
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
// try {
// bw.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
}
读文件:
public static void readfile() {
// FileInputStream fis = null;
// InputStreamReader isr = null;
// BufferedReader br = null;
// try {
// String path = "C:\\\\Users\\\\Administrator\\\\Desktop\\\\abc.txt";
// fis = new FileInputStream(path);
// isr = new InputStreamReader(fis);
// br = new BufferedReader(isr);
// String line;
// while ((line = br.readLine()) != null) {
// System.out.println(line);
// }
// } catch (IOException e) {
// e.printStackTrace();
// } finally {
// try {
// br.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
String path = "C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\abc.txt";
String line;
try(BufferedReader in = new BufferedReader((new InputStreamReader(new FileInputStream(path))))){
while ((line = in.readLine()) != null){
System.out.println(line);
}
}catch (Exception e){
e.printStackTrace();
}
}
二进制文件读写
读:
public static void readFile1(){
String path = "C:\\Users\\Administrator\\Desktop\\abc.txt";
try (DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(path)))){
String a,b;
int c,d;
a=dis.readUTF();
c=dis.readInt();
d=dis.readInt();
b=dis.readUTF();
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}catch (Exception e){
e.printStackTrace();
}
}
写
public static void writeFile(){
FileOutputStream fos = null;
DataOutputStream dos = null;
BufferedOutputStream bos = null;
try {
String path ="C:\\Users\\Administrator\\Desktop\\abc.txt";
fos = new FileOutputStream(path);
bos = new BufferedOutputStream(fos);
dos = new DataOutputStream(bos);
dos.writeUTF("a");
dos.writeInt(20);
dos.writeInt(180);
dos.writeUTF("b");
}catch (Exception e){
e.printStackTrace();
}finally {
try {
dos.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
zip类的读写
java.until.zip
压缩
public static void singleZip() throws IOException {
File file = new File("C:\\Users\\Administrator\\Desktop\\timg.jpg");
File zipfile = new File("C:\\Users\\Administrator\\Desktop\\abc.zip");
InputStream input = new FileInputStream(file); //定义文件的输入流
ZipOutputStream zipOut = null; //声明压缩流对象
zipOut = new ZipOutputStream(new FileOutputStream(zipfile));
zipOut.putNextEntry(new ZipEntry(file.getName()));//设置ZipEntry对象
zipOut.setComment("single file zip");//设置注释
//压缩过程
int temp = 0;
while ((temp=input.read())!=-1){ //读取文件
zipOut.write(temp); //压缩输出
}
input.close();
zipOut.close();
}
解压缩
public static void unzips() throws IOException{
File file = new File("C:\\Users\\Administrator\\Desktop\\abc.zip");
File outFile = null;
ZipFile zipFile = new ZipFile(file);
ZipInputStream zipinput = null;
//定义解压的文件名
OutputStream out = null; //定义输出流,用域输出的每一个实体内容
InputStream input =null;//定义输入流,读取没有给zipentity;
ZipEntry entry =null;//每一个压缩实体
zipinput = new ZipInputStream(new FileInputStream(file));
//遍历压缩包中的文件
while ((entry = zipinput.getNextEntry())!=null){
System.out.println("解压缩"+entry.getName()+"文件");
outFile = new File("C:\\Users\\Administrator\\Desktop\\"+entry.getName());//定义输出的文件路径
if(!outFile.getParentFile().exists()){
outFile.getParentFile().mkdirs();
}
if(!outFile.exists()){
if(entry.isDirectory()){
outFile.mkdirs();
}else{
outFile.createNewFile();
}
}
if(!entry.isDirectory()){
input = zipFile.getInputStream(entry);
out = new FileOutputStream(outFile);
int temp =0;
while ( (temp = input.read())!=-1){
out.write(temp);
}
input.close();
out.close();
}
}
}