1.字符编码:
计算机中存储的都是二进制,称之为:字节
计算机中各种文字,标点,称之为:字符
2.Java中字符存储&读取
当咱们须要展现字符时,会将字节变成字符展现,这个过程称为:解码 当计算机存储字符时,会将字符变成字节保留,这个过程称之为:编码
3.常见字符表:
ASCII:最早的码表,因其余码表都蕴含ASCII码表 ,又叫 根底码表
GBK:国内扩大码,(蕴含GB2312和繁体字体)
UTF-8:万国码,汉字2-4个字节组成,个别是3个字节(寰球所有文字都反对)
4.String类的编解码:
解码:
String(byte[],String encoding) 将字节数组以指定码表,解码成字符串, 即字节变字符。(参数1:字节数组,参数2:码表名)
编码:
getBytes(String encoding) 将字符以指定码表,编码成字节数组, 即字符变字节,(参数:码表名)
示例代码:
public static void main(String[] args) throws UnsupportedEncodingException {
//键盘输入字符Scanner sc=new Scanner(System.in);String str=sc.nextLine();//字符转字节——编码byte[] arrByte=str.getBytes("UTF-8");System.out.println(Arrays.toString(arrByte));//字节转字符——解码String s=new String(arrByte,"UTF-8");System.out.println(s);
}
乱码:
起因:编码和解码采纳的码表不同。
解决办法:在解码和编码的时候,应用同一种码表。
5.文件操作—File类
5.1简述&入门:
在未来开发中,常常波及到操作硬盘文件/硬盘目录需要,为了能够操作硬盘数据。
Java中提供了java.io.File类,用来代表文件或目录
————————————————————
留神:
1:该类用来进行文件或目录操作
2:该类自身没有对文件目录或文件的数据读写性能
//示例代码:
public static void main(String[] args) {
//获取文件目录File f1=new File("java411/java01");System.out.println(f1);System.out.println(f1.exists());//获取文件File f2=new File("java411/io.txt");System.out.println(f2);System.out.println(f2.exists());//留神:file获取的文件或目录,不肯定真正存在 // exists() 该函数次要判断,某个文件/目录,是否实在存在于硬盘上, true—存在, false—不存在
}
5.2:相对路径与绝对路径:
绝对路径:带盘符的残缺门路。 相对路径:不带盘符的门路。
绝对路径:实践上从硬盘根目录,能够了解为从我的电脑处登程,须要退出盘符,理论从某个盘符的根目录登程
相对路径:在idea中,默认从以后我的项目的根目录登程
5.3:常见API:
判断办法:
exists() 判断文件/目录是否存在 isFile() 判断对象是否是文件 IsDirextory() 判断对象是否是目录 IsHidden() 判断对象是否为暗藏文件或目录
public static void main(String[] args) {
File f=new File("java411/io.txt");//判断该文件是否存在System.out.println(f.exists());//true—存在,false—不存在//判断是否为文件System.out.println(f.isFile());//true—文件,false—不是文件//判断是否为目录System.out.println(f.isDirectory());//true-目录,false-不是目录//判断该文件是否暗藏System.out.println(f.isHidden());//true—暗藏,false—没有暗藏
}
属性读取办法:
GetName() 取得文件/目录的名称 Length() 获取文件字节数,仅判断文件,不能判断目录,如果对象是目录返回后果不确定 GetAbsolutePath() 获取文件/目录绝对路径 Getpath() 获取文件/目录门路 LastModified() 获取文件最初一次批改工夫(毫秒值) File[] listRoots() 获取操作系统所有盘符
public static void main(String[] args) {
//读取一个文件File f=new File("java411/io.txt");//获取文件/目录名称System.out.println(f.getName());//展现文件名称//获取文件字节数,只能判断文件,目录判断不了System.out.println(f.length());//展现字节数//获取文件的绝对路径System.out.println(f.getAbsolutePath());//展现绝对路径//获取文件最初一次批改工夫(毫秒值)System.out.println(new Date(f.lastModified()).toLocaleString());//获取操作系统的所有符盘System.out.println(f.listFiles());//展现所有的符盘。
}
createNewFile() 当文件不存在时创立空文件,创立胜利返回true失败返回false;
Mkdir( ) 当目录不存在时创立空目录,创立胜利返回true,失败返回false,
注:无奈反复创立,或一次创立多个目录,
Mkdirs 当目录链不存在时创立空目录链,创立胜利1个或以上目录,返回true,失败返回false
//示例代码
public static void main(String[] args) throws IOException {
//创立目录链 //须要在java411下创立sll目录,sll目录下创立birthday //1:先将目录封装到file中File f=new File("java411/sll/birthday");System.out.println(f.exists());//当初是不存在的//调用mkdirs创立系列目录链boolean f1=f.mkdirs();System.out.println(f1);System.out.println("-------------"); //目录曾经创立实现//2:创立文件 //先创立一个空文件到sll/birthday File f3=new File("java411/sll/birthday/0429.txt");System.out.println(f3.exists());//此时也是不存在的//创键文件 boolean f4=f3.createNewFile();System.out.println(f4);//true--曾经创立实现
}
//获取子文件&子目录
String[] list() 获取当前目录下所有子文件和子目录名称
File[] listFiles() 获取当前目录下所有的子文件和子目录
//代码示例
//获取子文件和子目录名称
File fs=new File("java411");
String[] list=fs.list();
for (String s : list) {
System.out.println(s);
}
//获取子文件和子目录
File[] fes=fs.listFiles();
for (File fe : fes) {
System.out.println(fe);
}
6.File类其余结构
File( File parent, String child)
从父形象路径名和子路径名字符串创立新File实例
File(String pathname)
通过将给定的路径名字符串转换为形象路径名创立新的File实例
File(String parent, String child)
从父路径名字符串和子路径名字符串创立新的File实例
public static void main(String[] args) {
//相对路径File f1 = new File("测试/测试.txt");System.out.println(f1.exists());File parentFile = new File("测试");System.out.println(parentFile.exists());//需要:已知父级目录,获取父级目录中的子文件/子文件夹File f2 = new File(parentFile, "测试.txt");System.out.println(f2.exists());File f3 = new File("测试", "测试.txt");System.out.println(f3.exists());
}
7内容操作-数据读写
7.1简述:
IO操作:Input Output操作,即输入输出操作,对硬盘和内存进行操作(输出也叫读
操作,输入也叫写操作)
所以未来硬盘操作,内存操作,网络数据传输操作,都有应用IO操作
输出:把数据读取到程序中,(从文件读取数据)
输入:把程序中把数据写出,(向文件写出数据)
分类:
7.2输入流:
7.2.1
字符流:
FileWriter( File file) 给一个File对象结构一个FileWriter对象 FileWriter(String fileName) 结构有个给丁文件名的FileWriter对象 FileWriter:字符输入流,有缓冲区,尽能够操作文本内容
缓冲区有大小空间限度:默认8KB
public static void main(String[] args) throws IOException {
//字符输入流(字符流)有缓冲区 //File f=new File("D:/测试/测试1.txt")//若文件不存在,则进行创立,若存在,则进行笼罩FileWriter writer=new FileWriter("D:/测试/测试1.txt"); char[] arr="sll".toCharArray(); writer.write(arr); writer.write("\r\n"); writer.write("miss"); writer.write(" you"); //刷新缓冲区,把缓冲区数据刷新到硬盘文件中 writer.flush(); //收到敞开writer.close();}
FileOutputSteam:字节输入流,输入所有内容
public static void main(String[] args) throws IOException {
//字节输入流 //若文件不存在,进行创立,存在,进行笼罩 FileOutputStream fos=new FileOutputStream("D:/测试/测试2.txt");//字节输入,不须要新建flush刷新缓冲区操作 fos.write("miss".getBytes("UTF-8")); fos.write(" you".getBytes("UTF-8")); fos.close();
}
注意事项:
1:不同零碎的回车换行:
Windows: \r\n Linux: \n Mac:/r
2:流敞开复用问题:
流若敞开,不可再次复用,否则出异样:java.io.IOException:Stream Closed;
3:文件内容追加:
输入流默认进行文件数据笼罩操作。
7.3:输出流
7.3.1字符输出流:适于文本读取
public static void main(String[] args) throws IOException {
//创立输出流对象。 FileReader reader=new FileReader("D:/测试/测试1.txt");
// int read=reader.read();
// System.out.println((char) read);//强转,将int转为char
// System.out.println((char)reader.read());
char[] arr=new char[7]; reader.read(arr); System.out.println(Arrays.toString(arr)); //收动敞开 reader.close();}
字节输出流:实用于其余所有文件读取
8 . commons-io
8.1FileUtils:
8.1-1: 文件写办法:
字符输出:
writrStringToFile(File file, String data, String encoding )
把字符串data写到文件file中,应用encoding指定的编码格局,本办法会覆盖文件原有内容 。
writerStringToFile(File file, String data, String encoding ,boolean append)
把字符串data写到文件file中,应用encoding指定的编码格局, append:
True:不会覆盖文件原有内容,而且把data追加到文件原有内容之后。
False:会覆盖文件原有内容
代码示例:
public static void main(String[] args) throws IOException {
//创立字符串String data="sll";//将字符串增加到字符串中——append(true—不会覆盖文件原有内容,false—会覆盖文件原有内容)FileUtils.writeStringToFile(new File("sll/miss/birthday"),data,"UTF-8",true);
}
字节输出:
writeByteArrayToFile(File file,byte[] data)
把字节数组data写入文件file,本办法会覆盖文件原有内容
writeByteArrayToFile(File file,byte[] data,boolean append)
把字节数组data写入文件file, append: True:不会覆盖文件原有内容,而且把data追加到文件原有内容之后。 False:会覆盖文件原有内容
writeByteArrayToFile(File file, byte[] data,int off,int len,boolean append)
把字节数组data写入文件file中,
Off:向外写入其实索引(从0开始,蕴含起始)
Len:向外写入几个字节
Append: True:不会覆盖文件原有内容,而且把data追加到文件原有内容之后。
False:会覆盖文件原有内容
public static void main(String[] args) throws IOException {
//创立字符串String str="miss,you";//转换为字节字符byte[] data=str.getBytes("UTF-8");//覆盖文件原有代码操作FileUtils.writeByteArrayToFile(new File("sll/miss/birthday"),data);//局部写出操作(off-字节数组的起始索引,len-写入的字节数)FileUtils.writeByteArrayToFile(new File("sll/miss/birthday.txt"),data,0,4,false);
}
8.2目录操作方法:
复制&挪动:
copyDirectory(File srcDir,File Destdir)——复制内容 把srcDir目录下的内容复制到destDir目录下(如果destDir目录下有同名内容,则会被笼罩,其余目录放弃不变) copyToDirectory(File src,File destDir)——复制整体 把src文件或目录(及目录下所有内容)一并复制到destDir目录下(如果destDir目录下有同名内容,则会被笼罩,其余目录放弃不变)
copyFile(File srcFile,File destFile)——复制文件
把srcFile文件的内容复制到destFile文件中,destfile文件不存在则创立
MoveDirctory(File srcFile,File destSrc)——挪动整体变成(能够重命名)
把srcDir目录以及目录所有内容挪动并变成destDir目录
movetoDirectory(File src,File destDir,boolean createDestDir)——挪动整体到(不能够重命名)
把src文件或目录剪切到的是destDir目录下
createDestDir: True:当destDir目录不存在时创立该目录链 False:当destDir目录链不存在·时,抛出IOException异样
代码示例:
public static void main(String[] args) throws IOException {
//将miss的内容复制到i(只复制目录外面的内容)FileUtils.copyDirectory(new File("sll/miss"),new File("sll/I"));//将miss整体复制到you(整体复制蕴含目录)FileUtils.copyToDirectory(new File("sll/miss"),new File("sll/you"));//将文件sll复制——不存在会创立FileUtils.copyFile(new File("sll/miss/birthday.txt"),new File("sll/0429"));//将miss中的birthday文件挪动到tw的birthdayFileUtils.moveFile(new File("sll/miss/birthday.txt"),new File("tw/you"));//将miss挪动到twFileUtils.moveToDirectory(new File("sll/miss"),new File("tw/a"),true);
}
**
**查找&统计:
Collection<File> listFiles(File dir ,string[] exts, boolean recursive)
查找dir目录下指定扩展名的文件
Exts:指定的扩展名若为null,示意没有
Recursive:为false示意不查找子目录,为true示意该目录下所有内容
Collection<File> listFilesAndDirs(File dir,IOFileFilter fileFiler,IOFileFiler dirFilter)
Dir:查找的目录;
FileFilter:
TrueFileFilter.INSTANCE:示意查找所有文件
FalseFileFilter.INSTANCE:示意不查找任何文件
其余需要须要自行实现IOFileFilter接口
DirFilter:
TrueFileFilter.INSTANCE:示意查找所有文件
FalseFileFilter.INSTANCE:示意不查找任何文件
其余需要须要自行实现IOFileFilter接口
SizeOf(File file): 读取文件或目录的字节数。(留神:file类的length办法不能读取目录的字节数)
革除&删除:
CleanDirectory(File directory):
革除指定目录下所有内容,不会删除目录自身
DeleteDirectory(File directory):
删除指定目录下所有内容,同时会删除目录本身
- 留神:delete函数只能删除文件或者空目录,对非空目录无可奈法