1.File在指定目录创建文件
File file = new File("F:\\hell\\world\\Java\\a.txt");// 创建文件的时候,要保证对应的文件夹已经存在
try {file.createNewFile();
} catch (IOException e) {
System.out.println("创建失败");
e.printStackTrace();
2.File创建新目录和新文件
File file = new File("D:\\Hello\\World\\a");
File txtFile = new File(file,"a.txt0");
file.mkdirs();//创建新文件夹
try {
txtFile.createNewFile();//创建新文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mkdirs()与mkdir()的区别
mkdirs()可创建多级目录,mkdir()只能创建一级目录.
3.运用IO流指定数组拷贝指定文件
FileInputStream fis = new FileInputStream("致青春.mp3");//挎号内是文件的路径和文件名字
FileOutputStream fos = new FileOutputStream("copy.mp3");//挎号内是拷贝后的文件的路径和文件名字
byte[] arr = new byte[1024 * 8];
int len;
while((len = fis.read(arr)) != -1) {//如果忘记加arr,返回的就不是读取的字节个数,而是字节的码表值
fos.write(arr,0,len);
}
fis.close();
fos.close();
4.用BufferIO读写文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("致青春.mp3"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copy.mp3"));
int b;
while((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
//BufferedInputStream 和BufferOutputStream 读写是操作一个长度为8192的字节数组进行读写,他们完成一次读写需要操作两个数组,所有单轮效率是没有我们自定义8192数组来操作IO流的效率高的.
//flush和close方法的区别
flush()只是刷新缓存区,刷新完可以继续读写,而close()刷新完缓存区后就关流了,不能继续读写.
5.JDK1.7版本IO关流写法
try(
FileInputStream fis = new FileInputStream("xxx.txt");
FileOutputStream fos = new FileOutputStream("yyy.txt");
){
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
6.传统关流的写法
try {
fis = new FileInputStream("xxx.txt");
fos = new FileOutputStream("yyy.txt");
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
}finally {
try{
if(fis != null)
fis.close();
}finally { //try fianlly的嵌套目的是能关一个尽量关一个
if(fos != null)
fos.close();
}
}
7.IO流简单加密写法
/**
* @param args
* @throws IOException
* 将写出的字节异或上一个数,这个数就是密钥,解密的时候再次异或就可以了
*/
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("copy.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copy2.jpg"));
int b;
while((b = bis.read()) != -1) {
bos.write(b ^ 123);
}
bis.close();
bos.close();
}