文件管理 · 2022年8月18日

javaio写大文件|java中怎么用io流读写文件

① java中怎么用io流读写文件

可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取内到读取的内容。 BufferedReader bre = null;try {String file = "D:/test/test.txt";bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个容文件的缓存流while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环{System.out.println(str);//原样输出读到的内容};备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。

② java:使用io使用byte数组读写文件的时候,是否byte数组越大越好,效率越高

您好,提问者: 不是,最好定义成1024,这只是推荐。 另外你可以根据你的传输大小来定义。 如果定义的太大,会占有内存的。

③ java处理大数据,频繁IO读写

多线程会嘛

④ 关于java使用io流读写文件的一个问题

os.write(b, 0, len); 这句后b不会被清空的 每次执行is.read(b) 的时候数组b的元素会被覆盖。

⑤ java I/O读写文件 cpu过高怎么解决 一次生成50个文件

使用循环,高一阵,是正常。至多可以 Thread.sleep(2) 让CPU休息一下,同时程序的运行时间也增加了一些

⑥ 怎样使用Java处理大文件

以下将从常规方法谈起,通过对比来说明应该如何使用java读取大文件。1、常规:在内存中读取读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法:Files.readLines(new File(path), Charsets.UTF_8);FileUtils.readLines(new File(path));这种方法带来的问题是文件的所有行都被存放在内存中,当文件足够大时很快就会导致程序抛出OutOfMemoryError 异常。例如:读取一个大约1G的文件: @Testpublic void givenUsingGuava_whenIteratingAFile_thenWorks() throws IOException {String path = …Files.readLines(new File(path), Charsets.UTF_8);}这种方式开始时只占用很少的内存:(大约消耗了0Mb内存)然而,当文件全部读到内存中后,我们最后可以看到(大约消耗了2GB内存):这意味这一过程大约耗费了2.1GB的内存——原因很简单:现在文件的所有行都被存储在内存中。把文件所有的内容都放在内存中很快会耗尽可用内存——不论实际可用内存有多大,这点是显而易见的。此外,我们通常不需要把文件的所有行一次性地放入内存中——相反,我们只需要遍历文件的每一行,然后做相应的处理,处理完之后把它扔掉。所以,这正是我们将要做的——通过行迭代,而不是把所有行都放在内存中。2、文件流FileInputStream inputStream = null;Scanner sc = null;try {inputStream = new FileInputStream(path);sc = new Scanner(inputStream, "UTF-8");while (sc.hasNextLine()) {String line = sc.nextLine();// System.out.println(line);}// note that Scanner suppresses exceptionsif (sc.ioException() != null) {throw sc.ioException();}} finally {if (inputStream != null) {inputStream.close();}if (sc != null) {sc.close();}}这种方案将会遍历文件中的所有行——允许对每一行进行处理,而不保持对它的引用。总之没有把它们存放在内存中:(大约消耗了150MB内存)3、Apache Commons IO流同样也可以使用Commons IO库实现,利用该库提供的自定义LineIterator:LineIterator it = FileUtils.lineIterator(theFile, "UTF-8");try {while (it.hasNext()) {String line = it.nextLine();// do something with line}} finally {LineIterator.closeQuietly(it);}由于整个文件不是全部存放在内存中,这也就导致相当保守的内存消耗:(大约消耗了150MB内存)

⑦ (java)读写io文件

importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.util.Scanner;publicclassYuGiOh{ privatestaticfinalStringLINE=System.getProperty("line.separator"); privatestaticfinalStringFILE="io.txt"; ="result.txt"; privatestaticfinalintLEVEL=48; /** *读取文件某一行 */ privatestaticStringreadFile(Stringfile,intline) { Scannerscanner=null; try { scanner=newScanner(newFile(file)); scanner.skip("([^"+LINE+"]+"+LINE+"){"+(line-1)+"}"); if(scanner.hasNextLine()) { returnscanner.nextLine(); } } catch(Exceptionignore) {} finally { if(null!=scanner) { scanner.close(); } } return""; } privatestaticvoidwriteFile(Stringfile,Stringline) { FileWriterfw=null; try { fw=newFileWriter(file); fw.write(line); fw.flush(); } catch(IOExceptione) { e.printStackTrace(); } finally { if(null!=fw) { try { fw.close(); } catch(IOExceptionignore) {} } } } publicstaticvoidmain(String[]args) { Stringline=""; intcount=1; intone=0,two=0; while(!"".equals(line=readFile(FILE,count++))) { String[]array=line.split("\s+"); intnum=Integer.parseInt(array[0].trim()); intprice=Integer.parseInt(array[1].trim()); if(num<LEVEL) { one+=price; } elseif(num>LEVEL) { two+=price; } } intmax=0,min=0; max=one>two?one:two; min=one<two?one:two; Stringresult="high_price "+max+LINE+"low_price "+min; writeFile(RESULT,result); }}

⑧ java 实现写文件功能 io流题

importjava.io.Console;importjava.io.File;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;publicclassUser{ privateStringuserName; privateStringuserPass; publicUser(StringuserName,StringuserPass){ (); this.userName=userName; this.userPass=userPass; } publicStringgetUserName(){ returnuserName; } publicvoidsetUserName(StringuserName){ this.userName=userName; } publicStringgetUserPass(){ returnuserPass; } publicvoidsetUserPass(StringuserPass){ this.userPass=userPass; } publicstaticvoidmain(String[]args)throwsIOException{ StringuserName=null; StringuserPass=null; List<User>userList=newArrayList<User>();// Consoleconsole=System.console();// for(inti=0;i<5;i++){// userName=console.readLine("用户名:");// userPass=console.readLine("密码:");// Useruser=newUser(userName,userPass);// userList.add(user);// } Scannerconsole=newScanner(System.in); for(inti=0;i<5;i++){ System.out.print("用户名:"); userName=console.nextLine(); System.out.print("密码:"); userPass=console.nextLine(); Useruser=newUser(userName,userPass); userList.add(user); } console.close(); Filefile=newFile("users.txt"); PrintWriterout=newPrintWriter(file,"UTF-8"); for(Useruser:userList){ out.println(String.format("用户名:%s,密码:%s",user.getUserName(),user.getUserPass())); } out.close(); }}用户名:123,密码:333用户名:213,密码:333用户名:asds,密码:123用户名:sadas,密码:123用户名:dasdas,密码:123

⑨ android、java io写入文件,文件是空白的

你最大只读了1024字节,如果文件大于1024字节你剩下的就没进行读写。 byte[] b = new byte[1024];//1 File file1 = new File(sourceFile); File file2 = new File(File); FileInputStream fis = new FileInputStream(file1); FileOutputStream fos = new FileOutputStream(file2); int i; while(fis.read(b)>-1){ fos.write(b); }

⑩ java imageio写入数据后生成的文件为什么会比实际写入的大

你把摄像机拍摄的图片的一部分数据(二进制数据)用两种方式存到硬盘专的文件上.方式一属,把这些二进制数据编码成jpg图片,并保存,这里会加入一些"元数据",所以会比你想象中的大.方式二,直接把二进制数据流写到硬盘上文件中,没有加入"元数据"所以数据大小没发生变化.你可以想象一下方式一类似在MS Word文档中只存一个字母a,方式二类似在记事本中只存一个字母a,然后你比较这两个文件的大小.