Java 经典实例摘记 文件相关
2017-02-24 15:28
281 查看
给Map排序(7.9)
两个方法:1. 使用本来就基于key有序的TreeMap
2. 如果使用的是HashMap等不保证有序的Map,可以将Entry填充到ArrayList中,对ArrayList进行排序,以下是示例代码:
Map<String,Integer> map=new HashMap<String,Integer>(); //here ,we pretend we having put something into map //@Entry:java.util.Map.Entry List<Entry<String,Integer>> list=new ArrayList<Entry<String,Integer>>(map.entrySet()); //这里有一点要注意:sort方法可只接受一个List<T>的参数,但这个T要实现Compareable接口才行,否则sort需要传入一个Comparator来比较T Collections.sort(list,new Comparator<Entry<String,Integer>>(){/ @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o1.getKey().compareTo(o2.getKey()); } });
10. 输入和输出
使用Formmatter类(10.3)
这里和C的printf格式化输出类似,记录一下细节调用形式:
System.out.format("%1$04d and %2$e",1,Math.PI)
其中1、2代表使用第几个参数,04代表如果有空余则补零,长度为4,d、e表示输出格式
格式化编码 | 含义 |
---|---|
% | 表示插入参数 |
c | 表示一个字符,或者代表字符的有效整型 |
d | 表示一个整型 |
e | 表示一个科学计数法的浮点数 |
g | 表示一个浮点数,是否为科学计数法表示取决于数量级 |
s | 常规格式化,如果参数是null则输出null,如果参数可以格式化则调用参数的formatTo方法,否则调用toString方法 |
t | 表示一个日期,参数必须是long、Long或者Date类型 |
重定向标准流(10.9-10.10)
标准流是指标准输入输出和标准错误:System.in,System.out,System.err可以通过System.setOut(new FileOutPutStream(“File Path”)),重新定向标准输出到文件中,其他方法类似
对于要复制标准流,而不仅仅是重定向的情况,可以通过实现一个Stream的子类,然后覆盖方法write或read,在方法中对两个流操作,已达到复制的目的。使用时,将标准流重定向此自定义的Steam类
文件中平台无关的换行符(10.13)
如果要写入或者读出一串字符,尽量使用readLine或者println方法,或者使用File.separator而不是使用\n.
读取Jar以及Zip文件(10.20)
使用java.util.zip.ZipFile类一个ZipFile表示一个Zip或者Jar文件,其中包含若干个ZipEntry,表示文件中压缩的若干个文件
每一个ZipEntry有方法getName以及getInputStream,方便读取
一段示例代码:
ZipFile zf=new ZipFile("File path"); ZipEntry ze=zf.getEntry("entry name"); System.out.println(ze.getCompressedSize());//通过name获取指定文件 InputStream is=zf.getInputStream(ze);//获得流,方便读取 //获取所有文件 Enumeration allEntry=zf.entries(); while(allEntry.hasMoreElement()){ ZipEntry entry=allEntry.nextElement(); }
读取GUN zip压缩文件(10.21)
使用java.util.zip下的GZipInputStream和GZipOutputStream示例代码:
FileInputStream fis=new FileInputStream("GUN zip File path");//获得压缩文件 GZipInputStream gis=new GZipInputStream(fis);//以GZip流读取文件 InputStreamReader isr=new InputStreamReader(gis);//将字节方式转化为字符方式读取 BufferedReader br=new BufferedReader(isr);//以行方式读取
11. 目录和文件操作
创建一个新文件(11.2)
使用FileOutputStream或者FileWrite类在输出的时候如果没有文件都会创建新文件,但是记得要关闭它们。此外,如果仅仅想创建一个文件而不向其中写入任何东西,还可以使用File下的对象的createNewFile方法创建新文件(createNewFile不是静态方法,需要在对象上调用,但是对对象没有影响)
重命名文件
File是不可变对象,所以对文件的重命名需要创建两个File对象,然后调用旧文件名的renameTo方法,传入一个使用新文件名的File对象一个实例:
/*假设在D盘存在一个名字叫做t.txt的文件,现在将其重命名为txt.txt*/ File f=new File("D:/t.txt"); f.renameTo(new File("D:/txt.txt"));//此后对象f作废,f不再和实际的文件相关联,因为没有name为t.txt的文件
创建唯一命名的临时文件,以及随程序结束而删除的文件(11.5)
File类有静态方法createTempFile,可以创建唯一命名的临时文件,尤其适合服务器多个用户同时进行操作的情况此外,File类的对象有方法deleteOnExit,可以使调用的File对象在程序退出时被删除。
相关文章推荐
- Java 经典实例摘记 前5章 字符串和数字
- Java 经典实例摘记 高级部分(博而不精)
- Java使用DateUtils对日期进行数学运算经典应用示例【附DateUtils相关包文件下载】
- java中的IO相关的文件实例讲解
- 关于动态生成WML文件的一个Java实例(2)
- 关于动态生成WML文件的一个Java实例(4)
- 交换机IOS升级实例及相关文件命令
- 经典:Java及相关字符集编码问题研究
- JAVA经典实例--连接字符串
- java文件读写的相关类整理(from jdk)
- Laszal Mail 授权文件的生成 -> Java 帮助类技术实例
- 关于动态生成WML文件的一个Java实例(3)
- Java反射经典实例 Java Reflection Cookbook
- (经典)生成java编制的可执行文件exe
- Java文件操作实例
- Java反射经典实例 Java Reflection Cookbook
- java的相关排序算法,经典
- JAVA中关于树型图以及文件过滤器的基本实例代码(转贴请署名出处^_^)
- 经典:Java及相关字符集编码问题研究
- 经典:Java及相关字符集编码问题研究