IO知识点整理(文件File类的使用)
一:
1.API
2.构造函数的程序
注意这集中构造函数的特点。
同时,字段separator的使用。
import java.io.File; public class Test101 {
public static void main(String[] args) {
//f1
File f1=new File("a.txt");
//f2
File f2=new File("e:\\ty","b.txt");
//f3
File d=new File("e:\\tyty");
File f3=new File(d,"c.txt");
//separator
File f4=new File("e:"+File.separator+"yu"+File.separator+"d.txt");
//
System.out.println("f1="+f1);
System.out.println("f2="+f2);
System.out.println("f3="+f3);
System.out.println("f4="+f4);
}
}
3.结果
二:增删改查
1.常见的方法
1,创建。
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。
boolean mkdir():创建文件夹。
boolean mkdirs():创建多级文件夹。
2,删除。
boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。
void deleteOnExit();在程序退出时删除指定文件。
3,判断。
boolean exists() :文件是否存在.
isFile():
isDirectory();
isHidden();
isAbsolute();
4,获取信息。
getName():
getPath():
getParent():
getAbsolutePath()
long lastModified()
long length()
2.程序
import java.io.File;
import java.io.IOException; import javax.swing.plaf.synth.SynthSeparatorUI;
/**
* 文件的创建,删除,判断,获取
* @author Administrator
*
*/
public class Test102 {
public static void main(String[] args) throws IOException {
getMethod();
}
//createNewFile,mkdir,mkdirs,isDirectory,isFile,isAbsolute,exists
public static void mkMethod() throws IOException{
File f=new File("a.txt");
//System.out.println(f.createNewFile());
System.out.println(f.exists());
System.out.println(f.canExecute()+"...");
System.out.println(f.mkdir()); //true
System.out.println(f.isDirectory()); //true
System.out.println(f.isFile()); //false
System.out.println(f.isAbsolute());
}
//delete
public static void deMethod() throws IOException{
File f=new File("a.txt");
System.out.println(f.delete());
}
//getPath,getAbsolutePath,getParent,getName
public static void getMethod() throws IOException{
File f=new File("b.txt");
System.out.println(f.getPath());
System.out.println(f.getAbsolutePath());
System.out.println(f.getParent());
System.out.println(f.getName());
}
}
3.renameTo的程序
import java.io.File; public class Test103 {
/**
* reNameTo
* 相当于剪切复制
*/
public static void main(String[] args) {
File f1=new File("a.txt");
File f2=new File("b.txt");
System.out.println(f1.renameTo(f2));
}
}
三:列表
1.罗列全部的列表
注意的是list与listFile的区别
import java.io.File;
/**
* list与listFile的区别
* @author Administrator
*
*/
public class Test104 {
public static void main(String[] args) {
//listFileMethod();
listMethod();
}
public static void listFileMethod(){
File f=new File("E:\\Summary6\\demo1");
File[] dir=f.listFiles();
for(File file : dir){
System.out.println(file.getName()+"..."+file.length());
}
}
public static void listMethod(){
File f=new File("E:\\Summary6\\demo1");
String[] str=f.list();
for(String s : str){
System.out.println(s);
}
}
}
2.过滤需要的文件夹
注意:留下的是经过过滤条件筛选后的文件
import java.io.File;
import java.io.FilenameFilter; public class Test105 { public static void main(String[] args) {
filterMethod();
}
public static void filterMethod(){
File dir=new File("e:\\");
String[] arr=dir.list(new FilenameFilter(){
@Override
public boolean accept(File dir, String name) { return name.endsWith(".rrr");
}
});
for(String name:arr){
System.out.println(name);
}
}
}
3.listRoot:打印盘符
import java.io.File; public class Test106 {
/**
* listRoot:打印盘符
* @param args
*/
public static void main(String[] args) {
File[] f=File.listRoots();
for(File str : f){
System.out.println(str);
}
}
}
4.效果
5.循环打印
import java.io.File; /**
* 循环打印文件夹下的文件,以及下一层的文件夹中的文件
*/
public class Test107 {
public static void main(String[] args) {
showMethod();
}
public static void showMethod(){
File dir=new File("E:\\gitFile\\gs-rest-service");
loopMethod(dir,0);
}
public static void loopMethod(File dir,int level){
System.out.println(getLevel(level)+dir.getName());
level++;
File[] files = dir.listFiles();
for(int x=0; x<files.length; x++)
{
if(files[x].isDirectory())
loopMethod(files[x],level);
else
System.out.println(getLevel(level)+files[x]);
}
}
public static String getLevel(int level){
StringBuilder sb = new StringBuilder();
sb.append("| ");
for(int x=0; x<level; x++)
{
sb.insert(0,"| ");
}
return sb.toString();
}
}
6.效果
四:打印流
1.介绍
打印流主要包括字节打印流与字符打印流
相对而言字符打印流更加常用。
2.字节打印流:
PrintStream
构造函数可以接收的参数类型:
1,file对象。File
2,字符串路径。String
3,字节输出流。OutputStream
3.字符打印流:
PrintWriter
构造函数可以接收的参数类型:
1,file对象。File
2,字符串路径。String
3,字节输出流。OutputStream
4,字符输出流,Writer。
4.程序
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter; /**
* 关于printWriter的使用
*/
public class Test108 { public static void main(String[] args) throws IOException {
BufferedReader bufr=new BufferedReader(
new InputStreamReader(System.in));
PrintWriter out=new PrintWriter(new FileWriter("acb.txt"),true);
String line=null;
while((line=bufr.readLine())!=null){
if(line.equals("over"))
break;
out.println(line);
}
bufr.close();
out.close();
} }
五:properties特性
1.介绍
Properties是hashtable的子类。
也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。
是集合中和IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式:键=值。
2.设置与获取
import java.util.Properties;
import java.util.Set;
public class Test109 {
public static void main(String[] args) {
Properties pro=new Properties();
//set
pro.setProperty("zhangsan", "89");
pro.setProperty("lisi", "77");
pro.setProperty("wangwu","90");
//get
System.out.println(pro.getProperty("zhangsan"));
//特有的获取方法
Set<String> value=pro.stringPropertyNames();
for(String name : value){
System.out.println(name+"="+pro.getProperty(name));
}
}
}
3.运行效果
4.将文件中的值存放到properties集合中
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class Test110 {
public static void main(String[] args) throws IOException {
BufferedReader bufr=new BufferedReader(new FileReader("info.txt"));
Properties pro=new Properties();
String line=null;
while((line=bufr.readLine())!=null){
String[] str=line.split("=");
pro.setProperty(str[0], str[1]);
}
bufr.close();
System.out.println(pro);
}
}
5.运行结果
六:文件的切割与合并
1.文件的合并
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
public class Test111 {
public static void main(String[] args) throws IOException {
Vector<FileInputStream> vector=new Vector<FileInputStream>();
vector.add(new FileInputStream("1.txt"));
vector.add(new FileInputStream("2.txt"));
vector.add(new FileInputStream("3.txt"));
Enumeration<FileInputStream> en=vector.elements();
SequenceInputStream ss=new SequenceInputStream(en);
FileOutputStream fs=new FileOutputStream("4.txt");
int len=0;
byte[] buf=new byte[1024];
while((len=ss.read(buf))!=-1){
fs.write(buf, 0, len);
}
ss.close();
fs.close();
}
}
2.运行效果
3.分割
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class Test112 {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("u.jpg");
FileOutputStream fos = null;
byte[] buf = new byte[1024];
int len = 0;
int count = 1;
while((len=fis.read(buf))!=-1)
{
fos = new FileOutputStream("part\\"+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}
4.运行结果
5.再进行合并
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator; public class Test113 {
public static void main(String[] args) throws IOException {
merge(); }
public static void merge()throws IOException
{
//将ArrayList转换成Enumeration
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for(int x=1; x<=21; x++)
{
al.add(new FileInputStream("part\\"+x+".part"));
}
//use final ,because anonymous function
final Iterator<FileInputStream> it = al.iterator();
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
}; SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("i.jpg");
byte[] buf = new byte[1024];
int len = 0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
} }
IO知识点整理(文件File类的使用)的更多相关文章
- JAVA IO分析一:File类、字节流、字符流、字节字符转换流
因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...
- Java基础-IO流对象之File类
Java基础-IO流对象之File类 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IO技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...
- 2017.12.20 Java中的 IO/XML学习总结 File类详细
IO / XML 一.File类 1.定义/概念 Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件.File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文 ...
- Java基础(二十五)Java IO(2)文件File类
File类是一个与流无关的类.File类的对象可以获取文件及其文件所在的目录.文件的长度等信息. 1.File对象的常用构造方法. (1)File(String pathname) File file ...
- Java IO流中的File类学习总结
一.File类概述 File类位于java.io包中,是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹. File类有多种重载的构造方法.File类保存文件或目录的各种 ...
- Java文件File类学习总结
java.io.File类 代表文件和目录,在开发中,读取文件.生成文件.删除文件.修改文件的属性都会用到该类. 常见构造方法: public File(String pathName){} 以pat ...
- IO学习一(File类)
File类 1.凡是与输入.输出相关的类.接口都定义在java.io包下 2.File有构造器来创建对象,此对象对应着一个文件或文件目录 支持文件类型:.txt .avi .doc .jpg .ppt ...
- java基础文件,File类
此文参考自"Java SE程序设计" 编著: 青岛东合信息技术有限公司 算是做笔记,以后想看可以翻阅,顺便分享出来大家可以参照.如有侵权,请联系本人删除 文件 文件是相关记录或放在 ...
- Java 基础(三)| IO流之使用 File 类的正确姿势
为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 File 类? java ...
- IO流学习之File类
File类 Java文件类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等. File对象代表磁盘中实际存在的文件和目录.就是把文件和目录转换成对象,读取到内 ...
随机推荐
- oracle系统表v$session、v$sql字段说明
在本视图中,每一个连接到数据库实例中的 session都拥有一条记录.包括用户 session及后台进程如 DBWR, LGWR, arcchiver等等. V$SESSION中的常用列 V$SESS ...
- sql语句解析顺序和执行顺序
sql语句执行顺序1.from子句组装来自不同数据源的数据2.where子句基于指定的条件对记录行进行筛选3.group by子句将数据划分为多个分组4.使用聚集函数进行计算5.使用having子句筛 ...
- ceilometer主要组件分析
一.Agent 主要有compute agent 和central agent,还有一些其他的agent这里暂时不分析. agent初始化时会动态加载给定namespace的pollster插件,并通 ...
- LFS、BLFS、ALFS、HLFS的区别
转自:http://www.ha97.com/3927.html Linux From Scratch (LFS) 及其后代代表一种新方法,向用户揭示 Linux 操作系统是如何工作的.LFS 基于这 ...
- internal in C#
说白了 被 internal 修饰的东西只能在本程序集(当前项目)内被使用. 被 protected internal 修饰的属性/方法 可以在其他项目中,被派生类使用 例如有两个项目app1和app ...
- poj 2438 Children's Dining
http://poj.org/problem?id=2438 题意: 有2*N个人要坐在一张圆桌上吃饭,有的人之间存在敌对关系,安排一个座位次序,使得敌对的人不相邻. 假设每个人最多有N-1个敌人.如 ...
- JavaScript事件模拟元素拖动
一.前言: 最近要实现一个元素拖放效果,鼠标拖动元素并且定位元素,首先想到的是HTML5中的拖放,在HTML5中,有一个draggable属性,且有dragstart, dragover, drop等 ...
- 20155235 2016-2017-2 《Java程序设计》第8周学习总结
20155235 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO与NIO2 认识NIO NIO概述 Channel架构与操作 Buffer架 ...
- 20155206 2016-2017-2 《Java程序设计》第7周学习总结
20155206 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 认识时间与日期 1.格林威治时间(GMT):通过观察太阳而得,因为地球公转轨道为椭圆形且速度 ...
- Javascript Jquery 中的数组定义与操作
1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数 ...