java创建本地文件并读取文件
java功能强大,可以直接或间接与操作系统打“交道”。例如在本地创建文件,并读取文件,其实与本地写log日志是一样的道理。
接下来就是使用java来实现创建本地文件,并读取本地文件,废话就不多说了,直接上代码。
package localfile;
import java.io.*;
import java.util.Properties;
public class MichaelMakeNativeFile {
private static Properties base;
private static File pFile = null;
private static long iniModifyTime = 0;
private static String currentUrl;
//static生命周期与类实例化一致
static {
currentUrl = System.getProperty( "user.dir" ) + "\\";
System.out.println("当前项目的完整路径(只到项目文件夹名,不包括包名):"+currentUrl);
//1)创建文件
pFile = new File( currentUrl + "config\\michael.txt" );
iniModifyTime = pFile.lastModified();
//操作键值对
base = new Properties();
//++++++++++++++++++++++++++++++++++++文件夹和文件++++++++++++++++++++++++++++++++++++
try {
//如果不存在该文件,则创建新的文件,并写入新的默认值
if(!pFile.exists()){
createFile("config","michael.txt");
//2)写入文件
fileWrite("name","michael.pan");
fileWrite("age","20");
}
//+++++++++++++++++++++++++++++++++++++++++
//Properties需要加载FileReader才能读取File文件的值!!!
FileReader reader = new FileReader( pFile );
base.load( reader );
//+++++++++++++++++++++++++++++++++++++++++
//3)读取文件
// readFile(pFile);
} catch (Exception e) {
e.printStackTrace();
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
//创建文件夹和文件
private static void createFile(String fileDir,String fileName){
try {
//1)生成文件file
String property = System.getProperty("user.dir");//当前项目路径
String pathName = property + "\\"+fileDir+"\\"+fileName;
//**************************************************************************************
pFile = new File(pathName);
//记录最后修改的时间
iniModifyTime = pFile.lastModified();
pFile.getParentFile().mkdir();//根据java内容创建的File文件,调用mkdir()在本地文件上创建对应的文件夹
pFile.createNewFile();//根据java内容创建的File文件,调用createNewFile在本地文件上创建对应的文件,如pcq.ini
//**************************************************************************************
} catch (IOException e) {
e.printStackTrace();
}
}
//使用FileOutputStream的写入本地文件
private static void writeFile(File file,String writeContent){
FileOutputStream fileOutputStream = null;
try {
//2)写入文件,两种文件输出形式FileOutputStream和FileWriter。
fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(writeContent.getBytes());
//在关闭流之前,将遗留在缓存区的流冲刷出来,避免数据丢失
fileOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭流
assert fileOutputStream != null;
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//使用FileWriter的写入方式
private static void fileWrite(String key,String value){
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(pFile);
//设置key:value键值对
base.setProperty(key,value);
//保存键值对
base.store(fileWriter,"");
// fileWriter.write(writeContent);
fileWriter.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
assert fileWriter != null;
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//从本地读文件
private static String readFile(File file){
StringBuilder stringBuilder = null;
FileReader fileReader = null;
try {
fileReader = new FileReader(file);
//3)读取本地文件的内容 //read(ch)一次最多读5个字符,返回值最大为5。不足5时,返回对应的字符数
char[] chars = new char[5];
//+++++++++++++++++++++++++++读取方式一
//数据对的读入
// int data;
// while ((data = fileReader.read()) != -1){read()返回值为-1时,表示读文件到末尾;其他值都是相应的字符对应的数字
// System.out.println((char)data);
// }
//***************************方式一结束
int len;
stringBuilder = new StringBuilder();
String str = null;
//返回值为-1时,表示读文件到末尾
while ((len = fileReader.read(chars)) != -1){
//转换的数据是从ch数组中的[0,len)获得
str = new String(chars, 0, len);
stringBuilder.append(str);
}
System.out.println("FileReader读取的内容:"+stringBuilder.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
assert fileReader != null;
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return stringBuilder.toString();
}
//读取properties文件
private static String readProperties( String key){
if(iniModifyTime != pFile.lastModified()){
reloadFile();
iniModifyTime = pFile.lastModified();
}
return base.getProperty(key);
}
//重新加载文件,则就需要重新在Properties里面加载FileReader,每次刷新都要重新创建新的对象
private static void reloadFile(){
FileReader fileReader = null;
try {
fileReader = new FileReader(pFile);
base = new Properties();
base.load(fileReader);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
assert fileReader != null;
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws UnsupportedEncodingException {
new MichaelMakeNativeFile();
fileWrite("name2","中文");
fileWrite("name","michael.pan");
fileWrite("age","20");
System.out.println(readProperties( "name"));
System.out.println(readProperties( "age"));
System.out.println(readProperties( "sex"));
System.out.println(readProperties("classroom"));
System.out.println(readProperties( "name2"));
System.out.println(readProperties( "score"));
}
}
提示:直接将代码粘贴到开发环境中即可运行使用,希望对您有帮助,谢谢!