java本地文件与文件夹
来源:互联网 发布:零基础云计算视频教程 编辑:程序博客网 时间:2024/06/05 07:07
1文件
import java.io.File;public class Operation{public static void main(String args[]){File file=new File("hello.txt");if(file.exists()){//是否是文件System.out.println(file.isFile());//路径(是否是文件夹)System.out.println(file.isDirectory());}else{System.out.println("文件不存在");try{file.createNewFile("hello.txt");System.out.println("文件成功创建");}catch (IOException e) {e.printSSystem.out.println("文件无法创建");}}}} 以上是文件的创建
获取文件名getName()
文件路径file.getPath();
文件绝对路径 file.getAbsolutePath();
获取父级路径 file.getParent()
获取相对路径文件的父级路径 new File(file,getAbsolutePath(),getParent())
读取文件大小:fille.length()/1024+"byte"//在硬盘上是1000,整形与整形相除得整形,变为FLOAT即可,(float)fille.length()/1024+"byte
判断文件是否被隐藏:file.isHIdden()
是否可读:canRead();
是否可写:canWrite();
import java.io.File;public class Operation{public static void main(String args[]){/* File folder=new File("my new folder/one/two/three/main");if(folder.mkdir()){// if(foler.mkdirs()三级以上文件夹创建System.out.println("文件夹创建完成");}else{System.out.println("文件不存在");} */File folder=new File("my new folder");File newfolder =new File("my new folder-new");if(folder.renameTo(newfolder)){System.out.println("done");}else{System.out.println("fail");}}} 以上是文件夹的创建,重命名遍历文件夹,打印文件的目录,有层级打印,是文件夹的递归打印下级,是文件的仅打印文件名。
import java.io.File;public class Operation{public static void main(String args[]){printFile(new File("/code/java/"),1);}public static void printFile(File dir,int tab){if(dir.isDirectory()){File list[]=dir.listFiles();for(int i=0;i<list.length;i++){for(int j=0;j<tab;j++){System.out.print("---");}System.out.println(list[i].getName());if(list[i].isDirectory()){printFile(list[i],tab+1);}}}}}
接下来我们对文件进行操作,程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。一个字符由两个字节组成,字符流处理的是两个字节的Unicode字符。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点。
IO操作流程
1.使用File类打开一个文件;
2.通过字节流或字符流的子类指定输出位置。
3.进行读/写操作;
4.关闭输入/输出;
字节流可以将文本里面的数据读入到本地中,可以将本地的字符串写入到文件中。
流的操作用到装饰模式,一层一层包装。比如将字节流包装成字符流。BufferedReader涉及到一个缓冲区大小,把读到的数据放进缓冲区就避免了一个一个字符的读出方式。
例一:
//字节流读取,写出数据import java.io.FileOutputStream;import java.io.FileNotFoundException;import java.io.IOException; public class Operation{ public static void main(String args[]){ /* try{FileInputStream input=new FileInputStream("test.txt"); byte b[]=new byte[20]; input.read(b); String s=new String(b,"gbk"); System.out.println(s); } */ try{ FileOutputStream fos=new FileOutputStream("newtest.txt");//如果没有newtest.txt文件系统会自动创建一个文件 String outSring="I am not happy"; byte output[]=outSring.getBytes("gbk");//将字符串写入本地的字节数组 fos.write(output); fos.close(); //用完后要将流关闭 } catch(FileNotFoundException e){e.printStackTrace();} catch(IOException e){e.printStackTrace();} } }
例二:
带缓冲区的文件拷贝,运行速率快多了
import java.io.FileOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.BufferedInputStream;import java.io.BufferedOutputStream; public class Operation{ public static void main(String args[]){try{FileInputStream fis=new FileInputStream("image01.gif");BufferedInputStream bis=new BufferedInputStream(fis);FileOutputStream fos=new FileOutputStream("image02.gif");BufferedOutputStream bos=new BufferedOutputStream(fos);byte[] input=new byte[50];//文件209,510 字节,这里字节数组是不能完全读出文件的;//int len=bis.read(input);//查看read函数,知道它返回的是一个整数,是input数组的长度,如果返回的为-1就代表没有数据int count=0;long time=System.currentTimeMillis();int len;while(( len=bis.read(input))!= -1){count++;//bos.write(input);//每次读50个字节长度的字节数组,不足50个也是读50个字节,读进去一些空字符,就导致文件打不开fos.write(input, 0, len);//当它读到不足50个字节时就写他自己读到的长度}System.out.println(count+"次");bos.close();fos.close();bis.close();fis.close();System.out.println((System.currentTimeMillis()-time)+"ms");System.out.println("done");}catch(FileNotFoundException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();} } }
这里
System.currentTimeMillis()返回是一个long型,写为整形就要报错
例三 字节转字符操作文件
import java.io.FileOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.InputStreamReader;import java.io.File; public class Operation{ public static void main(String args[]){try{File file =new File("test.txt"); FileInputStream fis=new FileInputStream(file);InputStreamReader isr =new InputStreamReader(fis,"GBK");//接受字节转字符char input[]=new char[100];int l=0;while ((l=isr.read(input)) != -1){System.out.println(new String(input,0,l));}isr.close();fis.close();}catch(FileNotFoundException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();} } }
例四 用FileReader和FileWriter读取文本文件,拷贝文件import java.io.FileReader;import java.io.FileWriter;import java.io.FileNotFoundException;import java.io.IOException;import java.io.BufferedWriter;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.File; public class Operation{ public static void main(String args[]){try{FileReader fr=new FileReader("test.txt");//读取文件文本数据BufferedReader br=new BufferedReader(fr);FileWriter fw=new FileWriter("java_new.txt");BufferedWriter bw=new BufferedWriter(fw);String line;while((line = br.readLine()) != null){bw.write(line);}bw.close();fw.close();br.close();fr.close();}catch(FileNotFoundException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();} } }
- java本地文件与文件夹
- js启动本地文件或文件夹
- JS打开本地文件和文件夹
- java file类实现List生成本地文件与续写本地文件
- 用java打开本地文件
- java打开本地文件
- 用JAVA打开本地文件
- java 打开本地文件
- Java本地文件操作
- java本地文件下载
- [J2EE]java本地文件操作
- servlet---java读取本地文件
- Java 流读取本地文件
- java读取本地文件
- Java 本地文件常用操作
- 本地文件java常用操作
- java本地文件下载功能
- Java本地文件操作
- HTML阴影旋转移动
- echarts绘制地图随录
- get 与 post的区别?application json 与form表单的区别?
- 内网和外网的区别 连接不同设备上网
- 让人相见恨晚的vim插件:模糊查找神器LeaderF
- java本地文件与文件夹
- Server MyEclipse Tomcat v7.0 was unable to start within 45 seconds. If the server requires more time
- if选择分支语句
- MFC CListCtrl控件的基本使用
- 某东机试第二题
- 前端(第一节课 HTML、CSS 、JAVAscript的概念)
- iOS之UICollectionView自定义布局
- c/c++笔试、面试知识点(二)
- 服务器上配置SVN