File类相关操作
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类
存取配置文件
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Properties props=new Properties();
FileInputStream fis=new FileInputStream("props.txt");
props.load(fis);
Set<String> keys=props.stringPropertyNames();
for(String key:keys){
String value=props.getProperty(key);
System.out.println(key+":"+value);
}
FileOutputStream fos=new FileOutputStream("props.txt");
props.setProperty("name", "hello");
props.store(fos, null);
}
打印流
字节打印流:
PrintStream
构造函数可以接收的参数类型
1.file对象
2.字符串路径
3.字节输出流:OutputStream
字符打印流
PrintWriter
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
PrintWriter pw=new PrintWriter(System.out,true);
String line= br.readLine();
pw.println(line.toUpperCase());
pw.flush();
pw.close();
br.close();
/*while(!"over".equals(line)){
pw.print(line.toUpperCase());
line=br.readLine();
}*/
}
合并流
SequenceInputStream
对象序列化(被操作的对象需要实现Serializable接口)
ObjectInputStream,ObjectOutputStream
FileOutputStream fos = new FileOutputStream("person.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
Person person=new Person("lvjy",30);
oos.writeObject(person);
oos.close();
FileInputStream fis = new FileInputStream("person.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Person p=(Person) ois.readObject();
System.out.println(p);
ois.close();
自定义版本号:public staitc final long serialVersionUID=42L
新的类还能操作曾经被序列化的对象
只能把堆里面的数据序列化,但是不能把其他区域中的数据序列化(static变量不能序列化)
对非静态的成员也不想序列化的话,可以在序列化对象相关的成员变量加上trainsient关键字
管道流
PipedInputStream,PipedOutputStream
package com.travelsky.io; import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream; public class PipedStreamDemo { @SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
PipedInputStream in=new PipedInputStream();
PipedOutputStream out = new PipedOutputStream();
in.connect(out); PipedOut po = new PipedOut(out);
PipedIn pi = new PipedIn(in); new Thread(po).start();
new Thread(pi).start();
} }
class PipedOut implements Runnable{
private PipedOutputStream pos;
public PipedOut(PipedOutputStream pos) {
super();
this.pos = pos;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("piped out sleep");
try {
Thread.sleep(5000);
pos.write("hello,world".getBytes());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
class PipedIn implements Runnable{
private PipedInputStream pis; public PipedIn(PipedInputStream pis) {
super();
this.pis = pis;
} @Override
public void run() {
// TODO Auto-generated method stub
byte[] buf =new byte[1024];
try {
System.out.println("piped in wait");
int len=pis.read(buf);
String content = new String(buf,0,len);
System.out.println(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
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类相关操作的更多相关文章
- C# File类的操作
原文:C# File类的操作 File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件.File类方法的参 ...
- .Net File类的操作
//File类的常用操作方法 //File类的常用操作方法 //File.Exists //检测是否存在该文件 Exists //File.Create //创建一个文件 Create //File. ...
- file类简单操作
file类可表示文件或文件夹 import java.io.File; import java.io.FilenameFilter; import java.io.IOException; impor ...
- 大数据学习——scala类相关操作
1 类的定义 package com /** * Created by Administrator on 2019/6/3. */ //类并不用声明为public. class Person { // ...
- Java 输入/输出——File类
File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建 ...
- Java IO学习--File类
一.File类 File类具备一定的误导性,可能容易认为它指代的是文件,实际并非如此,它既能代表一个特定文件的名称,又能表示一个目录下一组文件的名称.简而言之,File类是文件或者目录路径名的抽象表示 ...
- IO编程之File类
File类是java.io包下代表与平台无关的文件及目录,程序操作文件和目录都可以通过File类来完成.值得指出的是,不管是文件还是目录都可以通过File类来操作.File能新建.删除.重命名文件和目 ...
- File类和RandomAccessFile类
目录 File类 File类常用操作 (1)创建文件 (2)删除文件 (3)创建文件夹 (4)列出指定目录全部文件 (5)删除目录 RandomAcce ...
- Java IO详解(一)------File 类
File 类:文件和目录路径名的抽象表示. 注意:File 类只能操作文件的属性,文件的内容是不能操作的. 1.File 类的字段 我们知道,各个平台之间的路径分隔符是不一样的. ①.对于UNIX平台 ...
随机推荐
- 【题解】Luogu P2057 [SHOI2007]善意的投票
原题传送门 我们一眼就能看出这是一道最小割的题 我们设不睡觉这种状态为S,睡觉这种状态为T 对于每个人,如果不想睡觉,就从S向这个人连流量为1的边,否则,就从这个人向T连流量为1的边 对于每一对朋友, ...
- 经典算法问题的java实现 (二)
原文地址: http://liuqing-2010-07.iteye.com/blog/1403190 1.数值转换(System Conversion) 1.1 r进制数 数N的r进制可以表 ...
- 绘制COCO数据集结果
import os import time import datetime import mmcv import cv2 as cv import json import numpy as np im ...
- flask --- 02. 路由, 初始化配置,蓝图
一.Flask 路由 1.添加路由的方式 ① ② 实例: ① @app.route("/my_de") def detail() ② def detail() app.add_ur ...
- linux驱动编写(pwm驱动)【转】
本文转载自:https://blog.csdn.net/feixiaoxing/article/details/79889240 pwm方波可以用来控制很多的设备,比如它可以被用来控制电机.简单来说, ...
- 再谈git和github-深入理解
git中的 objects 和 refs 是什么? 目录objects是仓库的 "对象库" , 是包含 代码, 提交, 日志, 信息, 索引等信息的关键所在 refs是一些 sha ...
- ComponentOne 产品经理:为什么要从C1Report迁移到FlexReport
概述 如果你正在使用ComponentOne Enterprise 的Reports for WinForm 报表控件(C1Report),你一定会喜欢更为强大的FlexReport! FlexRep ...
- ABAP search help (搜索帮助) 几种种方法
ABAP search help (搜索帮助) 几种种方法 域范围 ABAP 的搜索帮助有很多种方法,掌握下面的几种基本差不多了 *&------------------------- ...
- [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world
[大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world 原文链接:http://www.cnblogs.com/blog5277/ ...
- micro-template改造
(function ($) { $.fn.razor = function (data) { var render=$(this).data('razor'); if (!render) { var ...