有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java追加倒数第二行

我目前正在将读取的文件存储在List<String>中,将我的String添加到列表的倒数第二位,最后将我的列表写入原始文件

它工作得很好,因为我的文件只有20行,但我觉得如果有一个更大的文件,这将是一个非常漫长的过程

因此,我的问题是:是否有一种类似Append的方法来简单地选择要添加行的位置


共 (1) 个答案

  1. # 1 楼答案

    只要用append模式打开一个java.io.FileOutputStream,然后只写一个字符串

    使用该类的以下构造函数是:

    FileOutputStream(String name, boolean append)

    这是用于附加到文件末尾的

    可以使用java.io.RandomAccessFile编辑文件中的任何位置

    编辑: 使用RandomAccessFile实现任务的示例代码

    import java.io.RandomAccessFile;
    import java.util.ArrayList;
    import java.util.List;
    
    public class InsertPenultimateLine {
    
        private static String nl = System.getProperty("line.separator");
    
        private static void usingRAF() throws Exception {
            String fileName = "somefile.txt";
            String myLine = "blah-blah-blah";
    
            RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
    
            List<Byte> bytes = new ArrayList<Byte>();
            long len = raf.length();
            long index = len-1;
            for(;index>0;index ) {
                raf.seek(index);
                byte b = raf.readByte();
                if(b == 10) {
                    break;
                }
                bytes.add(0, b);
            }
    
            byte[] rawBytes = new byte[bytes.size()];
            for(int j=0;j<bytes.size();j++) {
                rawBytes[j] = bytes.get(j);
            }
            String str = new String(rawBytes);
            str = myLine + nl + str;
    
            raf.seek(index + 1);
            raf.write(str.getBytes());
    
            raf.close();
        }
    
        public static void main(String[] args) throws Exception {
            usingRAF();
        }
    }