下面是文件File的简单使用
直接上代码
/**
* @ClassName FileTest
* @Author 莫邪
* @Description TODO
* @Date Created in 23:10 2018/7/8
* @Version 1.0
*/
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class FileTest {
public static void main(String[] args) throws IOException {
//在tomcat中,在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
String projectPath = System.getProperty("user.dir");//得到工程的路径
//获取当前类的绝对路径
String classPath =FileTest.class.getResource("/").getPath();
String classPath1 =FileTest.class.getResource("").getPath();
System.out.println("工程的绝对路径:"+projectPath);
System.out.println("当前的classpath路径:"+classPath);
System.out.println("得到的是当前类FileTest.class文件的URI目录。不包括自己:"+classPath1);
File file = new File("text.txt");
//System.out.println("获取标准路径"+file.getCanonicalPath());
System.out.println("获取绝对路径"+file.getAbsolutePath());
if(!file.exists()){
file.createNewFile();//判断文件是否存在,不存在,创建文件
}
System.out.println("文件的大小"+file.length());
System.out.println("创建文件时的path"+file.getPath());
System.out.println("文件的名字"+file.getName());
}
}
下面是关于输入输出流的简单使用
上代码解释,不罗嗦
package io.study;/**
* @ClassName StreamTest
* @Author 莫邪
* @Description TODO io的基本操作
* @Date Created in 23:28 2018/7/8
* @Version 1.0
*/
import java.io.*;
/**
* @ClassName StreamTest
* @Author 莫邪
* @Description TODO
* @Date Created in 23:28 2018/7/8
* @Version 1.0
*/
public class StreamTest {
public static void main(String[] args) throws IOException {
//使用输入流的时候必须确保文件是存在的,不然会报异常,报文件找不到的异常
//可以在BufferedInputStream中组合使用流,这里使用BufferedInputStream的效率会比普通的InputStream高,因为BufferedInputStream
//中有缓冲区,可以加快文件的读写,以InputStream或者是OutputStream结尾的类操作的是字节流(二进制流)
InputStream inputStream = new BufferedInputStream(new FileInputStream(new File("in.txt")));
//这里使用输出流的文件可以不确保文件存在,如果不存在将会自动创建
OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(new File("out.txt")));
//OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(new File("out.txt"),true));文件的追加操作
//判断当前的流是否支持重复读的操作,inputStream是不可以重复读,读完一次之后处了特殊的复位操作不能
//再重新读一遍流,默认inputstraem是不支持的,但是BufferedInputStream支持
if (inputStream.markSupported()) {
//标记当前流中的位置,往后的1024个字节可以支持重复读,
// 如果多余1024个字节使用reset重置指针Dao标记的位置时会报错
inputStream.mark(1024);
}
//下面进行文件的读取和复制的操作
//创建一个存储数据的byte数组
System.out.println("当前文件的还剩的可读的字节数大小" + inputStream.available());
byte[] data = new byte[1024];
//当read()返回结果为-1的时候代表文件已经读到的结尾
//否则返回当前返回读到的字节数的大小
int len;
while ((len = inputStream.read(data)) != -1) {
System.out.println("当前读到的数据长度:" + len);
outputStream.write(data, 0, len);//确定len是为了提高效率
}
System.out.println("复位前当前文件的还剩的可读的字节数大小" + inputStream.available());
inputStream.reset();//确保已经读取的数据没有超过inputStream.mark(1024)设置的值
System.out.println("复位后当前文件的还剩的可读的字节数大小" + inputStream.available());
while ((len = inputStream.read(data)) != -1) {
System.out.println("当前读到的数据长度:" + len);
outputStream.write(data, 0, len);//确定len是为了提高效率
}
//流使用完毕后应该将其关闭
outputStream.flush();//养成好习惯,将数据flush到文件中,确保文件成功写入了数据
outputStream.close();
inputStream.close();
}
}