1、File类常见方法:

创建:

boolean createNewFile():在指定位置创建文件

如果该文件已经存在,则不创建,返回false,和输出流不一样,输出流对象一建立就创立文件,而且文件已经存在会发生覆盖

boolean mkdir():创建文件夹,只能创建一级文件夹

boolean mkdirs():创建多级文件夹

renameTo():

删除:

boolean delete():删除失败,返回false

void deleteOnExit():在程序退出时删除指定文件

判断:

boolean exists():判断文件是否存在

boolean isFile():

boolean isDirectory():

在判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在,通过exists()方法进行判断

isHidden():是否为隐藏文件

isAbsolute():是否为绝对路径

获取信息:

getName():

String getPath():

getParent():返回的是绝对路径中的文件父目录,如果获取的是相对路径,则返回空,如果相对路径中有上一层目录,那么该目录就是返回结果

String getAbsolutePath():

lastModified():

length():返回文件长度

Static File[] listRoots():返回系统中所有的盘符

String [] list():返回该路径下所有的文件和目录——FilenameFilter()

File[] listFiles():

Properties类

存取配置文件

  1. public static void main(String[] args) throws IOException {
  2. // TODO Auto-generated method stub
  3. Properties props=new Properties();
  4. FileInputStream fis=new FileInputStream("props.txt");
  5. props.load(fis);
  6.  
  7. Set<String> keys=props.stringPropertyNames();
  8. for(String key:keys){
  9. String value=props.getProperty(key);
  10. System.out.println(key+":"+value);
  11. }
  12.  
  13. FileOutputStream fos=new FileOutputStream("props.txt");
  14. props.setProperty("name", "hello");
  15. props.store(fos, null);
  16. }

打印流

字节打印流:
PrintStream

构造函数可以接收的参数类型

1.file对象

2.字符串路径

3.字节输出流:OutputStream

字符打印流
PrintWriter

  1. public static void main(String[] args) throws IOException {
  2. // TODO Auto-generated method stub
  3. BufferedReader br = new BufferedReader(
  4. new InputStreamReader(System.in));
  5.  
  6. PrintWriter pw=new PrintWriter(System.out,true);
  7. String line= br.readLine();
  8. pw.println(line.toUpperCase());
  9. pw.flush();
  10.  
  11. pw.close();
  12. br.close();
  13. /*while(!"over".equals(line)){
  14. pw.print(line.toUpperCase());
  15. line=br.readLine();
  16. }*/
  17. }

合并流
SequenceInputStream

对象序列化(被操作的对象需要实现Serializable接口)

ObjectInputStream,ObjectOutputStream

  1. FileOutputStream fos = new FileOutputStream("person.txt");
  2. ObjectOutputStream oos=new ObjectOutputStream(fos);
  3. Person person=new Person("lvjy",30);
  4. oos.writeObject(person);
  5. oos.close();
  6.  
  7. FileInputStream fis = new FileInputStream("person.txt");
  8. ObjectInputStream ois = new ObjectInputStream(fis);
  9. Person p=(Person) ois.readObject();
  10. System.out.println(p);
  11. ois.close();

自定义版本号:public staitc final long serialVersionUID=42L

新的类还能操作曾经被序列化的对象

只能把堆里面的数据序列化,但是不能把其他区域中的数据序列化(static变量不能序列化)

对非静态的成员也不想序列化的话,可以在序列化对象相关的成员变量加上trainsient关键字

管道流

PipedInputStream,PipedOutputStream

  1. package com.travelsky.io;
  2.  
  3. import java.io.IOException;
  4. import java.io.PipedInputStream;
  5. import java.io.PipedOutputStream;
  6.  
  7. public class PipedStreamDemo {
  8.  
  9. @SuppressWarnings("resource")
  10. public static void main(String[] args) throws IOException {
  11. // TODO Auto-generated method stub
  12. PipedInputStream in=new PipedInputStream();
  13. PipedOutputStream out = new PipedOutputStream();
  14. in.connect(out);
  15.  
  16. PipedOut po = new PipedOut(out);
  17. PipedIn pi = new PipedIn(in);
  18.  
  19. new Thread(po).start();
  20. new Thread(pi).start();
  21. }
  22.  
  23. }
  24. class PipedOut implements Runnable{
  25. private PipedOutputStream pos;
  26. public PipedOut(PipedOutputStream pos) {
  27. super();
  28. this.pos = pos;
  29. }
  30. @Override
  31. public void run() {
  32. // TODO Auto-generated method stub
  33. System.out.println("piped out sleep");
  34. try {
  35. Thread.sleep(5000);
  36. pos.write("hello,world".getBytes());
  37. } catch (InterruptedException e) {
  38. // TODO Auto-generated catch block
  39. e.printStackTrace();
  40. } catch (IOException e) {
  41. // TODO Auto-generated catch block
  42. e.printStackTrace();
  43. }
  44. }
  45.  
  46. }
  47. class PipedIn implements Runnable{
  48. private PipedInputStream pis;
  49.  
  50. public PipedIn(PipedInputStream pis) {
  51. super();
  52. this.pis = pis;
  53. }
  54.  
  55. @Override
  56. public void run() {
  57. // TODO Auto-generated method stub
  58. byte[] buf =new byte[1024];
  59. try {
  60. System.out.println("piped in wait");
  61. int len=pis.read(buf);
  62. String content = new String(buf,0,len);
  63. System.out.println(content);
  64. } catch (IOException e) {
  65. // TODO Auto-generated catch block
  66. e.printStackTrace();
  67. }
  68. }
  69. }

RandomAccessFile

该类不算是IO体系中的子类,而是直接继承自Object

但是它是IO包中成员,因为它具备读和写功能

内部封装了一个数组,而且通过指针对数组的元素进行操作。

可以通过getFilePointer获取指针位置,同时可以通过seek改变指针的位置

通过构造函数可以看出,该类只能操作文件

RandomAccessFile(String name,String mode)  

mode:r,rw,rws,rwd

write方法只写出int类型的最低8位

操作基本数据类型的流对象:DataStream

DataInputStream,DatOutputStream

readInt(),readBoolean,readDouble()

writeInt(),writeBoolean,writeDouble()

writeUTF(),readUTF():加强版的UTF-8

操作字节数组

ByteArrayInputStream:

在构造的时候,需要接收数据源,而且数据源是一个字节数组

ByteArrayOutputStream

在构造的时候,不用定义数据目的,因为该对象中已经内部封装了一个可变长度的字节数组。这就是数据目的地。因为这两个流对象都操作的是数组,并没有使用系统资源,所以不用进行close关闭

操作字符数组

CharArrayReader与CharArrayWriter

操作字符串

StringReader,StringWriter

Tomcat默认的解码方式为ISO8859-1

get方式提交:必须手工转换字符编码

post方式提交:可以通过setCharacterEncoding()函数来设定编码方式

UTF-8修改版:

单字节:0xxxxxxx

两字节:110xxxxx 10xxxxxx

三字节:1110xxxx 10xxxxxx 10xxxxxx

File类相关操作的更多相关文章

  1. C# File类的操作

    原文:C# File类的操作 File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件.File类方法的参 ...

  2. .Net File类的操作

    //File类的常用操作方法 //File类的常用操作方法 //File.Exists //检测是否存在该文件 Exists //File.Create //创建一个文件 Create //File. ...

  3. file类简单操作

    file类可表示文件或文件夹 import java.io.File; import java.io.FilenameFilter; import java.io.IOException; impor ...

  4. 大数据学习——scala类相关操作

    1 类的定义 package com /** * Created by Administrator on 2019/6/3. */ //类并不用声明为public. class Person { // ...

  5. Java 输入/输出——File类

    File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建 ...

  6. Java IO学习--File类

    一.File类 File类具备一定的误导性,可能容易认为它指代的是文件,实际并非如此,它既能代表一个特定文件的名称,又能表示一个目录下一组文件的名称.简而言之,File类是文件或者目录路径名的抽象表示 ...

  7. IO编程之File类

    File类是java.io包下代表与平台无关的文件及目录,程序操作文件和目录都可以通过File类来完成.值得指出的是,不管是文件还是目录都可以通过File类来操作.File能新建.删除.重命名文件和目 ...

  8. File类和RandomAccessFile类

    目录 File类     File类常用操作     (1)创建文件     (2)删除文件     (3)创建文件夹     (4)列出指定目录全部文件     (5)删除目录 RandomAcce ...

  9. Java IO详解(一)------File 类

    File 类:文件和目录路径名的抽象表示. 注意:File 类只能操作文件的属性,文件的内容是不能操作的. 1.File 类的字段 我们知道,各个平台之间的路径分隔符是不一样的. ①.对于UNIX平台 ...

随机推荐

  1. Django-debug-toolbar的使用

    Django项目的开发过程中,离不开各种调试,那么,我们今天介绍一个工具,django debug toolbar,该工具为我们提供了更加丰富的调试信息,如提供session信息,SQL查询信息等等. ...

  2. UI自动化(五)dom

    获取标签 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 // 直接获取标签   document.getEleme ...

  3. flask --- 03 .特殊装饰器, CBV , redis ,三方组件

    一.特殊装饰器(中间件) 1.before_request 在请求进入视图函数之前 @app.before_request def look(): 2. after_request 在结束视图函数之后 ...

  4. Python3 tkinter基础 OptionMenu 点击按钮,出现单选的下拉列表

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  5. MYSQL : The user specified as a definer ('root'@'%') does not exist

    The user specified as a definer ('root'@'%') does not exist 此种报错主要是针对访问视图文件引起的(没有权限) 解决方法: 2.进入mysql ...

  6. Mac cnpm安装失败及解决方案

    首先安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 淘宝镜像安装cnpm, 在终端输入: npm install -g cnpm --registry=h ...

  7. RN中API之NetInfo--浅谈

    我们在做移动端项目和手机APP应用时,避免不了要获取用户手机的网络状况.在使用RN技术开发APP时,其内置的NetInfo API就是为了解决这一问题的.下面简单的讲下NetInfo如何使用. 最新的 ...

  8. 更改ssh,ftp默认端口

    1.  更改ssh端口 放置升级openssh之后做此步骤 配置文件/etc/ssh/sshd_config 注释掉Subsystem      sftp    /usr/libexec/openss ...

  9. mongoose中connect()、createConnection()和connection的区别和作用

    转文:原文 1 mongoose简介 在使用mongodb数据库开发项目中,nodejs环境下可能会使用到mongoose模块连接并操作mongodb数据库.mongoose模块相当于Java中的数据 ...

  10. c# Excel 行高、列宽、合并单元格、单元格边框线、冻结

    http://www.2cto.com/kf/201007/52724.html 新增选择整列: Range = ((Range)(WALeTieSheet.Cells[1, PwCStartCol_ ...