java读写文件 java 操作本地文件
一、mybatis如何读取blob文件
在MyBatis中读取BLOB文件需要使用JDBC的getBlob方法获取BLOB对象,然后通过BLOB对象的getBinaryStream方法获取输入流。
接下来可以使用IO流的方式读取BLOB文件的内容。
可以通过在MyBatis的映射文件中定义一个返回类型为InputStream的查询语句,然后在Java代码中调用该查询语句获取BLOB文件的输入流。
最后可以使用输入流进行读取操作,例如将BLOB文件保存到本地或者进行其他处理。
二、java读文件取得换行符
提示,不要通过字节流或者是字符流的形式进行读取,可以直接通过BufferedReader流的形式进行流读取,就没有换行符无法区分的问题,之后通过readLine方法获取到流的内容。
BufferedReaderbre=null;try{Stringfile="D:/test/test.txt"
;bre=newBufferedReader(newFileReader(file))
;//此时获取到的bre就是整个文件的缓存流while((str=bre.readLine())!=null)//判断最后一行不存在,为空结束循环{System.out.println(str)
;//原样输出读到的内容};备注:流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
三、java 操作本地文件
一、文件的创建、删除和重命名
Filefile=newFile("/bin/hello.txt");//文件无法被创建,系统找不到指定的路径
file.createNewFile();
Filefile=newFile("bin/hello.txt");
file.createNewFile();
Filefile=newFile("../hello.txt");//在当前目录的上一层目录创建文件
file.createNewFile();
Filefile=newFile("../../hello.txt");//在当前目录的上一层目录创建文件
file.createNewFile();
file.exists()
Filenameto=newFile("Hello.txt");
file.renameTo(nameto);//重命名文件
重命名文件,达到了移动文件的效果,跨目录时,要求源和目的必须处于同一个分区
另外如果目标的重命名文件已经存在,重命名操作也会失败的
文件处于不同的分区,需要使用文件的copy,而不是重命名
Filenameto=newFile("src/newHello.txt");
file.renameTo(nameto);//重命名文件
//文件
file.isFile();
//路径(文件夹)
file.isDirectory();
file.delete();//删除文件
二、文件夹的创建、删除和重命名
Filefolder1=newFile("mynewfolder");
Filefolder2=newFile("mynewfolder/one/two/three/main");
mkdirDemo(folder1);
mkdirsDemo(folder2);
Filenewfolder=newFile("mynewfolder-new");
renameFolder(folder1,newfolder);
Filenewfolder2=newFile("mynewfolder/one/2/three/main");
renameFolder(folder2,newfolder2);//重命名失败,被重命名的文件夹在构造函数中,必须是多级目录的最后一个子目录
Filenewfolder3=newFile("mynewfolder/one/2");
renameFolder(folder2,newfolder3);//重命名失败,被重命名的文件夹在构造函数中,必须是多级目录的最后一个子目录
//必须处于同一个分区,另外如果目标的重命名文件夹已经存在,重命名操作也会失败的
FilefolderSrc=newFile("mynewfolder/one/two/three");
FilefolderDest=newFile("mynewfolder/one/three");
if(folderSrc.renameTo(folderDest)){
System.out.println("done");
}else{
System.out.println("fail");
}
Filefolder4=newFile("mynewfolder/one/two");//必须是空文件夹才可以删除,如果包含了其他文件或文件夹,那么删除失败
if(folder4.delete()){
System.out.println("done");
}else{
System.out.println("deletefail");
}
}
//创建单个目录,文件夹如果已经存在的话则会报错,创建失败.
privatestaticvoidmkdirDemo(Filefolder){
if(folder.mkdir()){
System.out.println("文件夹创建完成");
}else{
if(folder.exists()){
System.out.println("文件夹已经存在不用创建.");
}else{
System.out.println("文件夹创建失败");
}
}
/**
*创建多级目录,当然参数如果是一级目录,就只会创建一级目录
*文件夹如果已经存在的话也不会报错,已经存在的话就不创建
*@paramfolder2
*/
privatestaticvoidmkdirsDemo(Filefolder2){
if(folder2.mkdirs()){
System.out.println("文件夹创建完成!");
}
}
/**
*重命名文件夹
*@paramsrcFolder
*@paramdestFolder
*/
privatestaticvoidrenameFolder(FilesrcFolder,FiledestFolder){
if(srcFolder.renameTo(destFolder)){
System.out.println("重命名完成");
}else{
System.out.println("重命名失败");
}
}
三、读取文件的属性
Filefile=newFile("text.txt");
//判断文件是否存在
System.out.println(file.exists());
//读取文件名称,只跟构造函数中的名称有关,和文件是否存在无关
System.out.println(file.getName());
//读取文件路径,相对路径
System.out.println(file.getPath());
//读取文件路径,绝对路径,从磁盘的根目录开始算的
System.out.println(file.getAbsolutePath());
//读取文件的父级路径
System.out.println(file.getParent());//结果为null,因为file对应的路径是text.txt(构造函数).
System.out.println(newFile(file.getAbsolutePath()).getParent());
//读取文件的大小,单位是字节
System.out.println(file.length()/1000+"KB");//硬盘上单位进制是1000而不是1024
//判断文件是否是隐藏文件
//在linux下,以点开头的文件就是隐藏文件,在windows下,右键设定文件的隐藏属性
System.out.println(file.isHidden());
//判断文件是否可读
System.out.println(file.canRead());
//判断文件是否可写
System.out.println(file.canWrite());
//判断文件是否是文件夹
System.out.println(file.isDirectory());
四、设置文件的属性
//将文件设置为可写
file.setWritable(true);
//将文件设置为不可写
file.setWritable(false);
//将文件设置为可读
file.setReadable(true);
//将文件设置成不可读不可写
file.setReadable(false);
file.setWritable(false);
//将文件设置为只读
file.setReadOnly();