Java文件操作(一)

来源:互联网 发布:网络电视看电视 编辑:程序博客网 时间:2024/05/10 16:22

在读取文件的时候,为了避免乱码,我们需要按照文件的编码格式来读取文件,但是如何获取文件的编码格式,成了一大难题,查了资料终于搞定,现拿来与大家分享。

<span style="white-space:pre"></span>/** *  * @Description 获取文件编码格式  * @param fileName * @return * @throws IOException */public static String getCharset(File fileName) throws IOException{                BufferedInputStream bin = new BufferedInputStream(new FileInputStream(fileName));          int p = (bin.read() << 8) + bin.read();                  String code = null;                  switch (p) {              case 0xefbb:                  code = "UTF-8";                  break;              case 0xfffe:                  code = "Unicode";                  break;              case 0xfeff:                  code = "UTF-16BE";                  break;              default:                  code = "GBK";          }          if(bin!= null) bin.close();        return code;}
读文件操作:

/** *  * @Description 读文件 (路径下不存在,则创建文件) * @param fileRoot 文件路径 * @param fileName 文件名 * @return */public static String readFile(String fileRoot, String fileName) {        try {            if (!new File(fileRoot).isDirectory()) new File(fileRoot).mkdirs();            File file = new File(fileRoot, fileName);            return readFile(file);        }        catch (Exception e) {            return "";        }    }/** *  * @Description  读文件 * @param file 文件 * @return 文件内容 */private static String readFile(File file) {        try {        if (!file.exists()) file.createNewFile();//        BufferedReader br = new BufferedReader(new FileReader(file));        // 指定读取文件的编码格式,要和写入的格式一致,以免出现中文乱码,//        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), getCharset(file)));            String line = br.readLine();            StringBuffer sb = new StringBuffer();            while (line != null) {                sb.append(line + "\n");                line = br.readLine();            }            br.close();            System.out.println(sb.toString());            return sb.toString();} catch (IOException e) {e.printStackTrace();}return "";}

写文件操作,按指定格式写入,这里是UTF-8:

/** *  * @Description 写入文件  * @param fileRoot 文件路径 * @param fileName 文件名 * @param fileInfo 写入内容 */public static void writeFile(String fileRoot, String fileName, String fileInfo) {if(!new File(fileRoot).isDirectory()){new File(fileRoot).mkdirs();//创建此抽象路径名指定的目录,包括所有必需但不存在的父目录}//创建文件File file = new File(fileRoot, fileName);//写入文件writeFile(file, fileInfo);}/** *  * @Description 写入文件 * @param file 文件 * @param fileInfo 写入内容 */private static void writeFile(File file, String fileInfo) {try {if(!file.exists()){file.createNewFile();}//BufferedWriter bw = new BufferedWriter(new FileWriter(file));// 指定编码格式,以免读取时中文字符异常BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));bw.write(fileInfo);bw.flush();bw.close();} catch (IOException e) {e.printStackTrace();}}
创建文件:

/** * 创建文件  * @Description  * @author zhangjinmiao * @return */public static boolean createFile(File fileName){boolean flag = false;if(!fileName.exists()){try {fileName.createNewFile();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}flag = true;}return flag;}
删除文件:

/** * 删除文件 * @Description  * @param sPath * @return */public static boolean deleteFile(String sPath) {boolean flag = false;File file = new File(sPath);// 路径为文件且不为空则进行删除if(file.isFile()&& file.exists()){file.delete();flag = true;}return flag;}
追加内容到文件:

/** *  * @Description 向文件中追加内容  * @param filePath 文件路径 F:/a/zz.txt * @param content 追加的内容 */public static void contentToTxt(String filePath,String content){String str = new String(); //原有txt内容          String s1 = new String();//内容更新 try {File file = new File(filePath);if(file.exists()){System.out.println("文件存在");}else {System.out.println("文件不存在");file.createNewFile();//创建文件}//开始读文件//BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(file), getCharset(file)));while ((str = input.readLine()) != null) {                  s1 += str + "\n";              }              System.out.println("原有内容:\n"+s1);              input.close();              s1 += "\r\n"+ content;//新添内容换行加入    //          BufferedWriter output = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));              BufferedWriter output = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),getCharset(file)));              output.write(s1);              output.close();  } catch (Exception e) {e.printStackTrace();}}






0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 龙之谷pk卡怎么办 为什么访问别人空间没有记录怎么办 被蚊孑咬了有小红包怎么办 微信建了个打牌群找不客源怎么办 三星手机一直停在开机画面怎么办 微信猜拳被骗了怎么办 组队领金币的码怎么办 cad画图时鼠标飘怎么办 玩迷你世界很卡怎么办 玩迷你世界太卡怎么办 迷你世界太卡了怎么办 把线稿画在背景里了怎么办 蜗牛在家里跑了怎么办 小孩总是跟大人犟嘴怎么办 鹅当宠物养拉屎怎么办 金毛肚子胀很大怎么办 被小白兔咬了怎么办 仓鼠养在家里有味怎么办 被宠物仓鼠咬了怎么办 2个月小狗拉稀怎么办 家有很多小飞虫怎么办 孩子不和父母微信交流怎么办 我孩子和我顶嘴怎么办 我属龙孩子属狗怎么办 宝宝呛奶怎么办伴呼噜 离婚了欠的债务怎么办 小鸟生长发育过程壳破了怎么办 经常嗓子发炎抵抗力低下怎么办 生完孩子出虚汗怎么办 3岁宝宝抵抗力差怎么办 5岁宝宝免疫力低怎么办 狗狗后腿o型怎么办 狗狗前腿内八字怎么办 小猫腿摔瘸了怎么办会好吗 小狗的腿断了怎么办 狗后腿摔瘸了怎么办 狗狗脖子挠破了怎么办 狗狗脖子挠破化脓怎么办 狗狗大腿骨折了怎么办啊 狗狗洗澡后拉稀怎么办 狗狗好像生病了怎么办