-
6)FileOutputStream 实现了向文件中写出byte数据的方法查看全部
-
IO流(输入流,输出流) 字节流,字符流//Java中你读文件或者写文件的时候,你可以以字节为单位,也可以以字符为单位 1.字节流 1)InputStream,OutputStream//都是抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据的方式 2)EOF = END //读到-1就读到结尾 3)输入流基本方法 int b=in.read();读取一个字节无符号填充到整形的低八位。-1是EOF in.read(byte[] buf);读取数据填充到字节数组buf in.read(byte[] buf,int start,int size)读取数据到字节数组buf 从buf的start位置开始存放size长度的数据 4)输出流基本方法 out.write(int b) 写出一个byte到流,b的低八位 out.write(byte[] buf)将buf字节数组都写入到流 out.write(byte[] buf,int start,int size)字节数组buf 从buf的start位置开始写size长度的字节到流 5)FileInputStream--->具体实现了在文件上读取数据查看全部
-
System.out.println(Arrays.toString(buf));//可以用这种方式来打印字符数组 String s1=new String(buf);//转换成一个字符串,但是有些编码会有问题,几个字节连着写会出现乱码,如果单个写可能不会 System.out.println(s1); for(byte b:buf){//用十六进制输出 System.out.print(Integer.toHexString(b & 0xff)+" "); } raf.close();//关闭!查看全部
-
File demo=new File("G:\\demo");//如果没有写绝对目录,则建立的文件就在本目录 if(!demo.exists()) demo.mkdir();//mkdir()方法,可以创建一个文件;mkdirs()方法似乎可以创建多个文件 File file=new File(demo,"raf.dat"); if(!file.exists()) file.createNewFile(); RandomAccessFile raf=new RandomAccessFile(file,"rw"); //指针的位置 System.out.println(raf.getFilePointer());//得到指针位置 raf.write('A');//char类字符有两个字节,RandomAccessFile只写了一个字节进去,后八位 System.out.println(raf.getFilePointer()); raf.write('B'); int i=0x7fffffff;//写入一个整数 //用write方法每次只能写一个字节,如果要把i写进去就要写四次 raf.write(i>>>24);//高八位 raf.write(i>>>16); raf.write(i>>>8); raf.write(i); System.out.println(raf.getFilePointer()); //其实可以写一个int raf.writeInt(i);//相当于这个方法的底层做的就是上面那些代码的事情 String s="中"; byte[] gbk=s.getBytes("gbk");//转换成字符序列用的是项目默认的编码gbk raf.write(gbk); System.out.println(raf.length()); //读文件,必须把指针移到头部 raf.seek(0); //一次性读取,把文件中的内容都读到字节数组中 byte[] buf=new byte[(int)raf.length()]; raf.read(buf);//直接read只能读一个字节,这样就可以把全部都读到一个字节数组里面查看全部
-
RandomAccessFile是Java提供的对文件内容的访问,既可以读文件,又可以写文件。 RandomAccessFile支持随机访问文件,可以访问文件的任意位置 1.Java文件模型 在硬盘上的文件是byte byte byte存储,是数据的集合 2.打开文件 有两种模式“rw”(读写)和“r”(只读) RandomAccessFile raf=new RandomAccessFile(file,"rw");//要做的除了打开一个文件之外,还要告诉它打开的模式,由于是随机打开,存在一个文件指针,打开文件时指针在开头pointer=0;之后指针移动 3.写方法 raf.write(int)---->只写一个字节(后八位),同时指针指向下一个字节的位置,准备再次写入 4.读方法 int b=raf.read()---->读一个字节 5.文件读写完毕以后一定要关闭(Oracle官方说明)查看全部
-
//列出File类的一些常用操作,比如过滤,遍历等操作 public class FileUtils { /** * 列出指定目录下(包括其子目录的所有文件) * */ public static void listDirectory(File dir) throws IOException{ if(!dir.exists()){//如果不存在文件,抛出异常 throw new IllegalArgumentException("目录:"+dir+"不存在"); } if(!dir.isDirectory()){//如果不存子目录,抛出异常 throw new IllegalArgumentException(dir+"不是目录"); } /**String[] filenames=dir.list();//返回的是一个String的数组,list()方法列出的是所有目录的文件名,没有子目录的内容 * for(String string:filenames){ //System.out.println(string); System.out.println(dir+"\\"+string);//打印出的是整个文件路径 } */ //如果要遍历子目录下的内容,就需要构造成File对象做递归操作,File提供了直接返回File对象的API File[] files=dir.listFiles();//返回的是直接子目录(文件)的抽象 /** * for(File file:files){ * System.out.println(file);//依旧是直接子目录的对象 } */ if(files!=null && files.length>0){ for(File file:files){ if(file.isDirectory()){ //递归 listDirectory(file); } else{ System.out.println(file); } } } }查看全部
-
//常用的File对象的API System.out.println(file);//file.toString()的内容 System.out.println(file.getAbsolutePath());//打印路径 System.out.println(file.getName());//文件名字 System.out.println(file2.getName());//文件对象,打印的就是文件的名字 System.out.println(file.getParent());//打印父目录 System.out.println(file2.getParent());//打印父目录查看全部
-
//java.io.File常用于表示文件(目录) //File类只用于表示文件(目录)的信息(名称,大小等),不能用于文件内容的访问 public class FileDomo { public static void main(String[] args) throws IOException{ //了解构造函数的几种情况 查帮助 //Alt+/可以查看类的构造函数 File file=new File("G:\\Java工程师\\imooc");//分隔符既可以用双斜杠,又可以用反斜杠 //File file1=new File("e"+File.separator);//这个语句可以使不同的系统都认识这个分隔符 //System.out.println(file.exists());//exists())查看这个目录是否存在 if(!file.exists()){ file.mkdir();//创建这个文件(目录) } else file.delete();//删除这个文件(目录) //是否是一个目录 如果是目录返回true,如果不是或者不存在就返回FALSE System.out.println(file.isDirectory()); //是否是一个文件 System.out.println(file.isFile()); //创建一个文件 //File file2=new File("G:\\Java工程师","日记1.txt"); File file2=new File("G:\\Java工程师\\日记1.txt"); if(!file2.exists()) file2.createNewFile(); else file2.delete();查看全部
-
File是对文件夹和文件信息的操作,RandomAccessFile是对文件内容的操作,r w rw,可以对任意位置 RandomAccessFile raf=new RandomAccessFile(file,"r/w/rw")查看全部
-
目录跟文件不一样,创建目录(文件夹)用mkdir 多级用mkdirs 创建文件可以直接new File。但是用法基本相同查看全部
-
两种创建方式: File file1=new File("C:\\javaio\\日记.txt"); File file2=new File("c:\\javaio","日记.txt"); 一种是直接目录根文件名在一起,一种是分开查看全部
-
File类只能表示文件目录的信息,列出有什么东西,创建文件夹mkdir,不能用于对文件内容的访问操作 即File是对目录的操作,不是内容!查看全部
-
java是双字节编码,utf-16be 中英都是两个字节 utf-8 中3字节,英1字节 gbk 中2字节 英1字节 1Byte=8 bit int类型 占 4 字节 即 1 int = 4 byte = 32 bit 转化是可通过位与 & 0xff 去掉前三字节查看全部
-
//java是双字节编码utf-16be byte[] bytes4=s.getBytes("utf-16be"); //utf-16be编码中,中文占用两个字节,英文占用两个字节 for(byte b:bytes4){ System.out.print(Integer.toHexString(b & 0xff)+" "); } /** * 当你的字节序列是某个编码时,这个时候想把字节序列变成字符串 * 也需要用这种编码,否则会出现乱码 */ String str1=new String(bytes4);//用项目默认的编码 System.out.println(str1); String str2=new String(bytes4,"utf-16be"); System.out.println(str2); /** * 文本文件就是字节序列 * 可以是任意编码的字节序列 * 如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码 * 联通,联这是一种巧合,他们只是恰好符合了utf-8的编码规则 */查看全部
-
public static void main(String[] args) throws Exception { // TODO Auto-generated method stub String s="慕课ABC"; byte[] bytes1=s.getBytes();//转换成字符序列用的是项目默认的编码gbk for(byte b:bytes1){ //把字节(转换成了int)以16进制的方式显示 System.out.print(Integer.toHexString(b & 0xff)+" "); } System.out.println(); byte[] bytes2=s.getBytes("gbk"); //gbk编码,中文占用两个字节,英文占用一个字节 for(byte b:bytes2){ System.out.print(Integer.toHexString(b & 0xff)+" "); } System.out.println(); byte[] bytes3=s.getBytes("utf-8"); //utf-8编码中,中文占用三个字节,英文占用一个字节 for(byte b:bytes3){ System.out.print(Integer.toHexString(b & 0xff)+" "); } }查看全部
举报
0/150
提交
取消