java 文件创建、读、写、删除前n行内容

java 文件创建、读、写、删除前n行内容

/**  文件路劲 **/

private String fileDir= this.getFilesDir().getAbsolutePath() + “/fileurl/”;

/** 创建文件夹 文件 **/

 public static File createFile(String filePath, String fileName) throws IOException {
        /** 生成文件夹之后,再生成文件,不然会出错 **/
        String strFilePath = filePath + fileName;
        File file = new File(filePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        File subfile = new File(strFilePath);
        if (!subfile.exists()) {
            subfile.createNewFile();
        }
        return subfile;
    }

-----------------下面是4种方式写入文件-----------------

  1. FileWritter写入文件
 public void fwData() throws Exception {
        String data = "hello 我是:FileWritter写入@文件111" + "\r\n";
        File file = getFile(fileDir, "FileWriter");
        // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
        FileWriter fileWritter = new FileWriter(file, true);
        fileWritter.write(data);
        fileWritter.close();

    }
  1. BufferedWriter写入文件
  public void bwData() throws IOException {
        /**直接写字符串,数组或字符数据保存到文件。**/
        File file = getFile(fileDir, "BufferedWriter");
        FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write("hello 我是:BufferedWriter写入@文件111" + "\r\n");
        bw.close();
    }
  1. FileOutputStream 数据写入到文件中,必须将数据转换为字节,并保存到文件
  public void fosData() throws IOException {
        File file = getFile(fileDir, "FileOutputStream");
        FileOutputStream fop = new FileOutputStream(file, true);
        String content = "hello 我是:FileOutputStream写入@文件111" + "\r\n";
        // get the content in bytes
        byte[] contentInBytes = content.getBytes();
        fop.write(contentInBytes);
        fop.flush();
        fop.close();
    }

4 RandomAccessFile 数据写入到文件中,必须将数据转换为字节,并保存到文件

  public void rafData() throws IOException {
        File file = getFile(fileDir, "RandomAccessFile");
        
        RandomAccessFile raf = null;
        /** 构造函数 第二个是读写方式 */
        raf = new RandomAccessFile(file, "rw");
        /** 将记录指针移动到该文件的最后 */
        raf.seek(file.length());
        /** 向文件末尾追加内容 */
        String content = "777hello 我是:RandomAccessFile写入@文件111" + "\r\n";
        String logContent = new String(content.getBytes("UTF-8"), "iso-8859-1");//加入乱码控制
        System.out.println("写入文件的内容" + logContent);//输出是否为正常编码
        raf.writeBytes(logContent);//获取字节输出
        raf.close();
    }

-----------------下面是4种方式读文件内容-----------------

  1. FileReader 读取文件内容 它有三种方式读取 :
    ①逐个字符来读取文本文件
  public void fwDataRead() throws IOException {
    File file = getFile(fileDir, "FileWriter");
 
    FileReader fileReader = new FileReader(file.getAbsoluteFile());

    int ch = fileReader.read();
    while (ch != -1) {
        System.out.print((char) ch);
        ch = fileReader.read();
    }

    fileReader.close();
}
  

②使用数组来读取文本文件

    public void fwDataRead() throws IOException {
     File file = getFile(fileDir, "FileWriter");
 
   FileReader fileReader = new FileReader(file.getAbsoluteFile());
     int i = 0;
     char[] buf = new char[1024];
     int num = 0;
     while ((num = fileReader.read(buf)) != -1) {
         i++;
         System.out.println("FileReader 方式二 读取第" + i + "条" + new String(buf, 0, num));
     }
     fileReader.close();

 }

③用缓冲区读取文本文件

public void fwDataRead() throws IOException {
    File file = getFile(fileDir, "FileWriter");
   
    FileReader fileReader = null;
    BufferedReader bufr = null;

    fileReader = new FileReader(file.getAbsoluteFile());
    bufr = new BufferedReader(fileReader);

    String line = null;
    //BufferedReader提供了按行读取文本文件的方法readLine()
    //readLine()返回行有效数据,不包含换行符,未读取到数据返回null
    int i = 0;
    while ((line = bufr.readLine()) != null) {
        i++;
        System.out.println("FileReader 方式三 读取第" + i + "条" + line);
    }

    bufr.close();
}
  1. BufferedRead读取文件
 public void brDataRead() throws IOException {
        File file = getFile(fileDir, "FileWriter");

        FileInputStream fileReader = new FileInputStream(file);

        BufferedReader read = new BufferedReader(new InputStreamReader(fileReader, "UTF-8"));
        //读取 的时候可以  用Buffere的ReadLine方法  一行的读效率会比较高
        String line = null;
        while ((line = read.readLine()) != null) {
            System.out.println(line);
        }

        read.close();
    }
  1. FileInputStream 数据写入到文件中,必须将数据转换为字节,并保存到文件
   public void isrDataRead() throws IOException {
        File file = getFile(fileDir, "FileWriter");
        FileInputStream fileInputStream = new FileInputStream(file);
        InputStreamReader isr = new InputStreamReader(fileInputStream, "UTF-8");

        int len = 0;
        int i = 0;
        while ((len = isr.read()) != -1) {
            System.out.print((char) len);
        }

        fileInputStream.close();
    }
  1. RandomAccessFile 支持随机读取文件内容
   public void rafDataRead() throws IOException {
        File file = getFile(fileDir, "RandomAccessFile");

        RandomAccessFile randomFile = null;

        // 打开一个随机访问文件流,按只读方式
        randomFile = new RandomAccessFile(file, "r");
        int i = 0;
        String line = null;
        while ((line = randomFile.readLine()) != null) {
            System.out.println(line);

            String content = new String(line.getBytes("iso-8859-1"), "UTF-8");
            System.out.println("RandomAccessFile读取第" + i + "条" + content);
        }

        randomFile.close();
    }

-------------------删除文件前2行-----------------

/** 将整个文件中的全部内容读取出来,然后通过集合将每一行单独存放,
通过查找到集合内特定的内容后,将该行内容删除,
此时list集合会自动将后面的内容填补上来,再重新写入的时候不会出现空行的情况。
这时再重新遍历一次该集合,将现在的集合内容写入文件中,此时再看文件,
已经完成了删除需要删除的特定行内容了**/

 public void deleteFileNumLine() throws IOException {
     
        File file = getFile(fileDir, "RandomAccessFile");

        String str = null;
        ArrayList<String> list = new ArrayList<>();
        //BufferedReader是可以按行读取文件
        FileInputStream inputStream = new FileInputStream(file);
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

        while ((str = bufferedReader.readLine()) != null) {
            //如果有空格、去掉空格
            if (str.contains(" ")) {
                Pattern p = Pattern.compile("\\s*|\t|\r|\n");
                Matcher m = p.matcher(str);
                str = m.replaceAll("");
            }
            //如果不是空串、添加到list、然后提交
            if (!str.equals("")) {
                System.out.println(str);
                list.add(str);
            }
        }
        System.out.print("一共" + list.size() + "数据\n");

        bufferedReader.close();
        inputStream.close();

        /** list是缓存所有数据  lineNum是n条数据**/
        if (list.size() > lineNum) {
            list.subList(0, lineNum).clear();//移除下标为0到lineNum的元素
        } else {
            /**如果缓存数据等于或者小于传入的lineNum,清空文件内容**/
            list.clear();
        }


        FileOutputStream fileOutputStream = new FileOutputStream(file);
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
        BufferedWriter bw = new BufferedWriter(outputStreamWriter);

        if (list.size() != 0) {
            for (String string : list) {
                bw.write(string);
                bw.newLine();
                System.out.println(string);
            }
        } else if (list.size() == 0) {
            bw.write("");
        }
        bw.flush();
        bw.close();


    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Java范例开发大全(全书源程序),目录如下: 第1篇  Java编程基础 第1章  Java开发环境的搭建(教学视频:9分钟) 2 1.1  理解Java 2 1.2  搭建Java所需环境 3 1.2.1  下载JDK 3 1.2.2  安装JDK 4 1.2.3  配置环境 5 1.2.4  测试JDK配置是否成功 7 实例1  开发第一个Java程序 7 第2章  Java基础类型与运算符 实例2  自动提升 9 实例3  自动转换 10 实例4  常用基础类型之强制转换 11 2.2  运算符 12 实例5  算术运算符 12 实例6  关系运算符 13 实例7  逻辑运算符 14 实例8  位运算符 15 实例9  移位运算符 16 实例10  转型运算符 17 2.3  其他形式 18 实例11  常量与变量 18 实例12  各种进制的转换 19 实例13  Java中的进制与移位运算符 22 第3章  条件控制语句(教学视频:75分钟) 26 3.1  if控制语句 26 实例14  判断输入的年份是否为闰年 26 实例15  抽奖活动 27 3.2  for语句 28 实例16  小九九乘法表 28 实例17  如何列出素数 29 实例18  Java中的递归 31 实例19  男生女生各多少人 32 实例20  求水仙花数 34 实例21  求任意一个正数的阶乘 35 实例22  求n的n次方 35 实例23  利用for循环输出几何图形 36 实例24  杨辉三角 38 3.3  while语句 39 实例25  求1到100之间的和 39 实例26  存上100元需要多少天 40 实例27  输出100之间的所有偶数 41 实例28  如何判断回文数字 42 3.4  do…while语句 43 实例29  输出100之间的所有奇数 44 实例30  求最大的随机数 44 3.5  switch语句 45 实例31  判断字母分类 46 实例32  优良及差 47 实例33  打印任意一年日历 48 实例34  一年四季的划分 51 第2篇  Java数据处理 第4章  异常处理(教学视频:62分钟) 54 4.1  编译时异常 54 实例35  除0发生的算术异常(ArithmeticException) 54 实例36  数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37  数组元素类型不匹配异常(ArrayStoreException) 56 实例38  强制类型转换异常(ClassCastException) 56 实例39  索引越界异常(IndexOutOfBoundsException) 57 实例40  空指针异常(NullPointerException) 58 实例41  数字格式转换异常(NumberFornatException) 59 实例42  字符串索引越界异常(StringIndexOutBounds) 60 实例43  操作错误(UnsupportedOperationException) 60 4.2  运时异常 61 实例44  找不到指定类时发生的异常(ClassNotFoundException) 62 实例45  请求的方法不存在(NoSuchMethodException) 63 4.3  try…catch捕获异常 65 实例46  try…catch捕获异常的实例 66 实例47  try…catch…finally捕获异常的实例 67 实例48  try…catch嵌套捕获异常的实例 68 4.4  throws声明异常 69 实例49  throws声明异常实例一 69 实例50  throws声明异常实例二 70 4.5  throw抛出异常 72 实例51  throw抛出异常实例一 72 实例52  throw抛出异常实例二 73 4.6  自定义异常 74 实例53  自定义异常实例一 74 实例54  自定义异常实例二 75 第5章  数组(教学视频:98分钟) 78 5.1  一维数组 78 实例55  一维数组的创建与使用 78 实例56  按相反的顺序输出 79 实例57  奇偶分组 80 实例58  找宝 81 实例59  寻找最小数 82 实例60  我的位置在哪里 83 实例61  复制数组 85 实例62  插入新元素 86 实例63  数组的合并 87 实例64  去除重复元素 88 实例65  数组求和计算 90 实例66  求最大值、最小值和平均值 91 5.2  二维数组 92 实例67  二维数组的创建与使用 92 实例68  矩阵转置 93 实例69  奇数阶幻
1.得到服务器下载文件的大小,然后在本地设置一个临时文件和服务器端文件大小一致 a)获得访问网络地址 b)通过URL对象的openConnection()方法打开连接,返回一个连接对象 c)设置请求头 i.setRequestMethod ii.setConnectTimeout iii.setReadTimeout d)判断是否响应成功 e)获取文件长度(getContentLength()) f)随机访问文件取与入RandomAccessFile(file, mode) g)设置临时文件与服务器文件大小一致(setLength()) h)关闭临时文件 2.计算出每个线程下载的大小(开始位置,结束位置) a)计算出每个线程下载的大小 b)for循环,计算出每个线程的开始、结束位置 c)最后一个线程处理 3.每创建好一次就要开启线程下载 a)构造方法 b)通过URL对象的openConnection()方法打开连接,返回一个连接对象 c)设置请求头 i.setRequestMethod ii.setConnectTimeout d)判断是否响应成功(206) e)获取每个线程返回的流对象 f)随机访问文件取与入RandomAccessFile(file, mode) g)指定开始位置 h)循环取 i.保存每个线程下载位置 ii.记录每次下载位置 iii.关闭临时记录位置文件 iv.随机本地文件入 v.记录已下载大小 i)关闭临时文件 j)关闭输入流 4.为了杀死线程还能继续下载的情况下,从本地文件取已经下载文件的开始位置 a)创建保存记录结束位置的文件 b)文件 c)将流转换为字符 d)获取记录位置 e)把记录位置赋给开始位置 5.当你的n个线程都下载完毕的时候我进删除记录下载位置的缓存文件 a)线程下载完就减去 b)当没有正在运的线程时切文件存在时删除文件
创建Java文件可以使用任何文本编辑器,例如Notepad、Sublime Text、Eclipse等。在编辑器中创建一个文件,并将其扩展名保存为.java。例如,如果您要创建名为MyClass的Java类,则应将文件保存为MyClass.javaJava文件内容可以通过JavaFileInputStream类和BufferedReader类来完成。使用FileInputStream类来打开文件并创建一个输入流,然后使用BufferedReader类来文件中的内容。以下是一个示例代码: ```java FileInputStream inputStream = new FileInputStream("MyFile.java"); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); inputStream.close(); ``` 要Java文件,可以使用JavaFileOutputStream类和BufferedWriter类。使用FileOutputStream类来打开文件并创建一个输出流,然后使用BufferedWriter类来内容。以下是一个示例代码: ```java FileOutputStream outputStream = new FileOutputStream("MyFile.java"); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream)); String content = "public class MyClass { }"; writer.write(content); writer.close(); outputStream.close(); ``` 要打开和关闭Java文件,可以使用JavaFile类。使用File类来创建一个文件对象,然后使用它来执打开、关闭和删除操作。以下是一个示例代码: ```java File file = new File("MyFile.java"); // 打开文件 FileInputStream inputStream = new FileInputStream(file); // 关闭文件 inputStream.close(); // 删除文件 file.delete(); ``` 要修改Java文件中的指定内容,可以使用JavaFile类和替换操作。使用File类来创建一个文件对象,然后使用它来打开和文件中的内容。使用替换操作来查找和替换要修改的内容,然后使用FileOutputStream类和BufferedWriter类来入新内容。以下是一个示例代码: ```java File file = new File("MyFile.java"); // 打开文件内容 FileInputStream inputStream = new FileInputStream(file); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder contentBuilder = new StringBuilder(); while ((line = reader.readLine()) != null) { contentBuilder.append(line).append("\n"); } reader.close(); inputStream.close(); // 替换内容 String content = contentBuilder.toString(); content = content.replaceAll("public class MyClass", "public class MyNewClass"); // 入新内容 FileOutputStream outputStream = new FileOutputStream(file); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream)); writer.write(content); writer.close(); outputStream.close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥不可及zzz

我会用心写更多自己的经验。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值