「seek方法java」seek方法的参数

博主:adminadmin 2023-01-15 23:33:09 527

本篇文章给大家谈谈seek方法java,以及seek方法的参数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中seek()的用法

写段代码你看一下吧,用于从文件指定的位置开始读取,一般的下载工具都有断点续传功能,比如读取某个文件读取了一半,取消下载了,下次再下载的时候,从断点的位置继续下载,而不是重新下载文件,使用这个方法可以做到

public class Test2 {

    public static void main(String[] args) throws Exception {

        String filepath = "E:/test.exe";

        String outFile = "E:/copy.exe";

        long pos = firstRead(filepath, outFile);

        continueRead(filepath, outFile, pos);

    }

       

    /**

     * 第一次只读取文件的一半,到目标文件

     */

    public static long firstRead(String filepath, String out) throws Exception {

        RandomAccessFile file = new RandomAccessFile(filepath, "r");

        long fileLen = file.length();

           

        FileOutputStream outStream = new FileOutputStream(out);

        int sum = 0;  // 用于记录当前读取源文件的长度

        byte[] cache = new byte[1024];

        int len = -1;

        while ((len = file.read(cache)) != -1 sum fileLen/2) {

            outStream.write(cache, 0, len);

            sum += len;

        }

        outStream.close();

        file.close();

           

        return sum;   // 返回当前读取源文件的长度

    }

       

    /**

     * 从源文件指定位置继续读取文件内容,并输出到目标文件

     */

    public static void continueRead(String filepath, String out, long pos) throws Exception {

        RandomAccessFile file = new RandomAccessFile(filepath, "r");

        file.seek(pos);

           

        // 追加到目标文件中

        FileOutputStream outStream = new FileOutputStream(out, true);

        byte[] cache = new byte[1024];

        int len = -1;

        while ((len = file.read(cache)) != -1) {

            outStream.write(cache, 0, len);

        }

        outStream.close();

        file.close();

    }

}

一个java类对象赋初值的简单问题,请教!

定义一个随机文件流,后面有用到的,文件读取的

它在后面还是创建了实例 inout=new RandomAccessFile(f,"rw");前面赋值null只是定义而已。你可以写成RandomAccessFile inout = new RandomAccessFile(new File("F:\\","123.txt"));

输入流FileInputStream和输出流 FileOutputStream,实现的是对磁盘文件的顺序读写,而且读写要分别创建不同对象。相比之下RandomAccessFile类则可对文件实现随机读写操作。

RandomAccessFile对象的文件位置指针遵循下面的规律:

•新建RandomAccessFile对象的文件位置指针位于文件的开头处;

•每次读写操作之后,文件位置的指针都相应后移到读写的字节数;

•可以通过getFilePointer方法来获得文件位置指针的位置,通过seek方法来设置文件指针的位置。

RandomAccessFile常用方法:

skipBytes(long i):从前往后拨弄指示器的位置,就是跳过多少个字节读取数据。

Void seek(long p): 对指示器作决定性的定位,用于从后往前拨弄指示器的位置。对于seek方法,拥有skipBytes( )的功能,但seek( )在使用过程非常影响系统的开销。只有万不得已的情况下使用。

java io seek()

seek是从文件开头开始计算跳过的长度,skip是从当前指针所指向的位置开始计算的

比如文件内容为“12345”当前指向3

seek(2);则指向2

skip(2);则指向5

看过api后猜得~~

ps:我在1.5的api中只找到skipBytes(int n) 这个方法,没有skip()

java中使用skipByts有什么意义

seek(long a)是定位文件指针在文件中的位置。参数a确定读写位置距离文件开头的字节个数,比如seek(0)就是定位文件指针在开始位置。是绝对定位。

skipBytes()是指在文件中跳过给定数量的字节。是相对定位。

对于seek方法,拥有skipBytes( )的功能,但seek( )在使用过程非常影响系统的开销。

java文件读写,在一个已经有内容的文件中,追加第一行,如何做到?

我的想法是可以用RandomAccessFile,这个类的seek方法,想在文件的哪个位置插入内容都行。所以你的第一行就不在话下了。但是,这个会覆盖你文件中插入位置后面的内容。相当于我们在输入的时候,按了键盘的insert键盘。所以,像你这种情况只能用临时文件来存储原有的内容,然后把要插入的数据写入文件,再把临时文件的内容追加到文件中。\x0d\x0avoid insert(String filename,int pos,String insertContent){//pos是插入的位置\x0d\x0a File tmp = File.createTempFile("tmp",null);\x0d\x0a tmp.deleteOnExit();\x0d\x0a try{\x0d\x0a RandomAccessFile raf = new RandomAccessFile(filename,"rw");\x0d\x0a FileOutputStream tmpOut = new FileOutputStream(tmp);\x0d\x0a FileInputStream tmpIn = new FileInputStream(tmp);\x0d\x0a raf.seek(pos);//首先的话是0\x0d\x0a byte[] buf = new byte[64];\x0d\x0a int hasRead = 0;\x0d\x0a while((hasRead = raf.read(buf))0){\x0d\x0a //把原有内容读入临时文件\x0d\x0a tmpOut.write(buf,0,hasRead);\x0d\x0a \x0d\x0a }\x0d\x0a raf.seek(pos);\x0d\x0a raf.write(insertContent.getBytes());\x0d\x0a //追加临时文件的内容\x0d\x0a while((hasRead = tmpIn.read(buf))0){\x0d\x0a raf.write(buf,0,hasRead);\x0d\x0a }\x0d\x0a }\x0d\x0a}

seek方法java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于seek方法的参数、seek方法java的信息别忘了在本站进行查找喔。