设置文件路径;
File file = new File("f:"+File.separator+"ADemo"+File.separator+"my.txt");
创建文件
public boolean createNewFile();
删除文件
public booleandelete();
判断文件是否存在
public booleanexists();
路径分隔符
File.separator;
得到文件父路径
public FilegetParentFile();
【file.getParentFile().exists()】判断文件的父路径是否存在
创建路径
public boolean mkdirs();
【file.getParentFile().mkdirs()】
取得文件大小:
longlength();
判断文件是否是目录
booleanisDirectory();
判断是否是文件
booleanisFile();
输出文件列表
public class Demo {
public static void main(String[] args) throws Exception {
Filefile = new File("f:"+File.separator+"元旦");
print(file);
}
public static void print(File file){
System.out.println(file);
if(file.isDirectory()){
Fileresult[] =file.listFiles();
if(result!=null){
for(int x =0;x
字符流与字节流
步骤:
1、 通过File类定义一个要操作文件的路径
2、 通过字节流或字符流的子类对象为父类对象实例化
3、 进行数据的读(输入)、写(输出)操作
4、 数据流属于自愿操作,资源操作必须关闭
字节流:Inputstream、OutoutStream
字符流:Reader、Writer
OutputStream子类
FileOutputStream(File file)
创建文件输出流以写入由指定的 File对象表示的文件。
FileOutputStream(File file, boolean append)
创建文件输出流以写入由指定的 File对象表示的文件。 (追加)
方法
void write(byte[] b)
将 b.length字节从指定的字节数组写入此输出流。
void write(byte[] b, int off, int len)
从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。
abstract void write(int b)
将指定的字节写入此输出流。
文件内容的输出
public class CopyDemo {
public static void main(String[] args) throws Exception {
//1、定义要输出文件路径
Filefile = new File("f:"+File.separator+"ADemo"+File.separator+"my.txt");
//2、若文件目录不存在,则进行创建文件目录
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
//3、使用OutputStream和其子类进行实例化
OutputStreamoutput = new FileOutputStream(file);
//4、要进行文件内容的输出
Stringstr = "好好学习,天天向上!";
byte[] data = str.getBytes();
output.write(data);
//5、关闭资源
output.close();
}
}
//4、要进行文件内容的输出
String str = "好好学习,天天向上!";
byte[] data = str.getBytes();
for(intx=0;x
output.write(data);
}
//4、要进行文件内容的输出
String str = "好好学习,天天向上!";
byte[] data = str.getBytes();
output.write(data,2,6);
“\r\n”字符串中换行
InpuyStream
abstract int read()
从输入流读取数据的下一个字节。
int read(byte[] b)
从输入流读取一些字节数,并将它们存储到缓冲区 b 。
int read(byte[] b, int off, int len)
从输入流读取最多 len字节的数据到一个字节数组。
数据读取
public class Demo {
public static void main(String[] args) throws Exception {
//1、定义要输入文件路径
Filefile = new File("f:"+File.separator+"ADemo"+File.separator+"my.txt");
//2、若文件存在,执行读取操作
if(file.exists()){
//3、使用InputStream进行数据读取
InputStreaminput = new FileInputStream(file);
//4、进行数据读取
byte[] data = new byte[1024];
int len = input.read(data);
//5、关闭输入流
input.close();
System.out.println(new String(data,0,len));
}
}
}
//4、进行数据读取
byte[] data = new byte[1024];
int foot =0;//数组操作脚标
int temp =0 ;//每次读取的字节数据
while((temp=input.read())!=-1){
data[foot++]=(byte)temp;
}
//5、关闭输入流
input.close();
System.out.println(new String(data,0,foot));
Writer
voidwrite(char[] cbuf)
写入一个字符数组。
abstract voidwrite(char[] cbuf, int off, int len)
写入字符数组的一部分。
void write(intc)
写一个字符
voidwrite(String str)
写一个字符串
voidwrite(String str, int off, int len)
写一个字符串的一部分。
public class Demo {
public static void main(String[] args) throws Exception {
//1、定义文件路径
Filefile = new File("f:"+File.separator+"ADemo"+File.separator+"my.txt");
//2、若文件目录不存在,则称创建
if(file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
//3、实例Writer的对象
Writerout = new FileWriter(file);
//4、进行文件内容的输出
Stringstr = "你好!!!!";
out.write(str);
//5、关闭输出流
out.close();
}
}
Reader
int read()
读一个字符
int read(char[] cbuf)
将字符读入数组。
abstract int read(char[] cbuf, int off, intlen)
将字符读入数组的一部分。
Int read(CharBuffer target)
尝试将字符读入指定的字符缓冲区。
public class Demo {
public static void main(String[] args) throws Exception {
//1、定义文件路径
Filefile = new File("f:"+File.separator+"ADemo"+File.separator+"my.txt");
//2、若文件存在,继续执行
if(file.exists()){
//3、实例Writer的对象
Readerin = new FileReader(file);
//4、进行文件内容的输出
char[] data = new char[1024];
int len = in.read(data);
//5、关闭输入流
in.close();
System.out.println(new String(data,0,len));
}
}
}
综合案例:文件拷贝
//文件拷贝
public class CopyDemo {
public static void main(String[] args) throws Exception {
if(args.length!= 2){//初始化参数不足两位
System.out.println("命令执行错误");
System.exit(1);
}
FileinFile = new File(args[0]);//源文件路径
if(!inFile.exists()){//源文件不存在
System.out.println("原文进不存在,请确认执行路径");
System.exit(1);
}
FileoutFile = new File(args[1]);//目标文件路径
if(outFile.getParentFile().exists()){
outFile.getParentFile().mkdirs();
}
InputStreaminput = new FileInputStream(inFile);
OutputStreamoutput = new FileOutputStream(outFile);
int len =0;
while((len=input.read())!=-1){
output.write(len);
}
input.close();
output.close();
}
}
//文件拷贝 (改进)
public class CopyDemo {
public static void main(String[] args) throws Exception {
if(args.length!= 2){//初始化参数不足两位
System.out.println("命令执行错误");
System.exit(1);
}
FileinFile = new File(args[0]);//源文件路径
if(!inFile.exists()){//源文件不存在
System.out.println("原文进不存在,请确认执行路径");
System.exit(1);
}
FileoutFile = new File(args[1]);//目标文件路径
if(outFile.getParentFile().exists()){
outFile.getParentFile().mkdirs();
}
InputStreaminput = new FileInputStream(inFile);
OutputStreamoutput = new FileOutputStream(outFile);
byte[] data = new byte[1024];
int len =0;
while((len=input.read(data))!=-1){
output.write(data);
}
input.close();
output.close();
}
}
内存流
字节内存流:ByteArrayInputStream、ByteArrayOutputStream
字符内存流:CharArrayReader、CharArrayWriter
以文件操作为例:
输出(OutputStream):程序 → OutputStream → 文件
输入(InputStream):程序 ← InputStream ← 文件
以内存操作为例:
输出(OutputStream):程序 ← OutputStream ← 文件
输入(InputStream):程序 → InputStream → 文件
打印流(PrintStream)
构造方法:PrintStream(OutputStream out) 创建一个新的打印流。
需要接收一个OutprintStream对象
输入:
//输入数据
public class Demo {
public static void main(String[] args) throws Exception {
InputStreaminput = System.in;
byte data[] =new byte[1024];
System.out.print("请输入数据:");
int len = input.read(data);
System.out.println("输入数据为:"+new String(data,0,len));
}
}
public class Demo {
public static void main(String[] args) throws Exception {
InputStreaminput = System.in;
StringBufferbuf = new StringBuffer();
System.out.print("请输入数据:");
int temp = 0;
while((temp = input.read())!=-1){
if(temp == '\n' ){
break;
}
buf.append((char)temp);
}
System.out.println("输入数据为:"+buf);
}
}
缓冲输入流
字符缓冲区流:BufferedReader、BufferedWirter
字节缓冲区流:BufferedInputStream、BufferedOutputStream
键盘输入的标准格式
//输入数据
public class Demo {
public static void main(String[] args) throws Exception {
//System.in是InputStream类的对象
//BufferedReader 的构造方法里面需要接受Reader类的对象
//利用InputStreamReader将字节流变为字符流
BufferedReaderbuf =new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入内容:");
Stringstr =buf.readLine();
buf.close();
System.out.println("输入的内容为:"+str);
}
}
输出文件内容
//输入数据
public class Demo {
public static void main(String[] args) throws Exception {
Filefile =new File("F:"+File.separator+"Ademo"+File.separator+"my.txt");
BufferedReaderbuf =new BufferedReader(new FileReader(file));
Stringstr=null;
while((str = buf.readLine())!=null){
System.out.println(str);
}
buf.close();
}
}
扫描流
Scanner
//输入数据
public class Demo {
public static void main(String[] args) throws Exception {
Scannerscan =new Scanner(System.in);
System.out.print("请输入内容:");
if(scan.hasNext()){
System.out.println("输入内容:"+scan.nextLine());
}
scan.close();
}
}
//读取文件数据
public class Demo {
public static void main(String[] args) throws Exception {
Filefile =new File("f:"+File.separator+"Ademo"+File.separator+"my.txt");
Scannerscan =new Scanner(new FileInputStream(file));
while(scan.hasNext()){
System.out.println(scan.next());
}
scan.close();
}
}