⑴ java如何判断一个视频文件的大小
如果是JQUERY 'onSelect': function(e, queueId, fileObj) 在这里 判断多大fileObj.size 。 如果是普通上传 可以读到文件路径 一样用 File file = new File(path); file .size 判断
⑵ 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 exceptions if (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读取文件夹大小的几种方法实例
import java.io.File;import java.util.ArrayList;import java.util.Collection;import java.util.List;import org.apache.commons.io.FileUtils;import org.apache.commons.io.IOUtils;public class Test {public static void main(String[] args) throws Exception {String searchStr = "APPTYPEID";File searchDir = new File("D:\\xampp\\htdocs\\discuz");List<Search> list = new ArrayList<Search>();Collection<File> files = FileUtils.listFiles(searchDir, null, true);List<String> lines = null;for (File file : files) {lines = FileUtils.readLines(file);for (int i = 0; i < lines.size(); i++) {if (lines.get(i).indexOf(searchStr) != -1) {Search s = new Search();s.setFilename(file.getName());s.setLine(i + 1);s.setContent(lines.get(i));list.add(s);}}}StringBuffer sb = new StringBuffer();for (Search s : list) {sb.append(s.getFilename() + " , " + s.getLine() + " , " + s.getContent()).append(IOUtils.LINE_SEPARATOR);}FileUtils.writeStringToFile(new File("D:\\search.txt"), sb.toString(), "UTF-8");}}class Search {private String filename;private int line;private String content;public String getFilename() {return filename;}public void setFilename(String filename) {this.filename = filename;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public void setLine(int line) {this.line = line;}public int getLine() {return line;}}
⑷ java对文件读写操作,文件大小有限制么
你如果是要一次读完一个文件的话,应该会有大小限制。一般情况下,打比方,你有个100MB的文件,你并不是一次读完,而是分块,10MB一次的读取,所以文件大小不会有限制。
⑸ java file 获取文件大小 ,是什么单位
1、java file 获取文件大小 ,单位是kb,File.length()获得文件字节大小/1024 获得 KB数, 由于整数运算省略小数部分,故加1。
2、目前Java获取文件大小的方法有两种:
1)通过file的length()方法获取。
2)通过流式方法获取。
⑹ java读取文件时如何获得已读取的字节大小
//查看例子即可。importjava.awt.BorderLayout;importjava.awt.Cursor;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.beans.PropertyChangeEvent;importjava.beans.PropertyChangeListener;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JProgressBar;importjavax.swing.SwingWorker;{=1L;privatestaticfinalintMIN=0;privatestaticfinalintMAX=100;;privateJButton;privateTasktask;publicBar(Stringtitle){setTitle(title);setLayout(newBorderLayout());progressBar=newJProgressBar(MIN,MAX);progressBar.setValue(MIN);progressBar.setStringPainted(true);add(progressBar,BorderLayout.CENTER);=newJButton("拷贝");.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){start();.setEnabled(false);}});add(,BorderLayout.EAST);}classTaskextendsSwingWorker<Void,Void>{@OverridepublicVoiddoInBackground(){setProgress(MIN);Filefile=newFile("a.jpg");longsize=file.length();byte[]bts=newbyte[(int)(size/(Math.random()*50+MAX-50))];intlength=0;longcLength=0;try{InputStreamstream=newFileInputStream(file);OutputStreamos=newFileOutputStream(newFile("_aa.jpg"));while((length=stream.read(bts))>0){os.write(bts,0,length);cLength+=length;setProgress((int)(cLength*MAX/size));Thread.sleep(30);}os.flush();os.close();stream.close();}catch(Exceptione){e.printStackTrace();}returnnull;}@Overridepublicvoiddone(){setTitle("拷贝完毕");Toolkit.getDefaultToolkit().beep();.setEnabled(true);setCursor(null);}}publicvoidpropertyChange(PropertyChangeEventevt){if("progress"==evt.getPropertyName()){intprogress=(Integer)evt.getNewValue();progressBar.setValue(progress);}}privatevoidstart(){task=newTask();task.addPropertyChangeListener(this);task.execute();setTitle("正在拷贝…");setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));}(){Barframe=newBar("Bar");frame.setAlwaysOnTop(true);frame.setSize(280,60);frame.setResizable(false);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}publicstaticvoidmain(String[]args){javax.swing.SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){createAndShowGUI();}});}}
⑺ java读取文件的文件大小有限制吗
按常理来说是没有限制的,但这个看你的硬件,还有java虚拟机的内存配置,一般100M朝上就有点困难了。注:当然了,我的电脑比较次
⑻ java流读取文件,不同流读取的文件大小为什么不一样
write(int b)的含义为Writes the specified byte to this output streambyte字节只能够表示2的8次方的数据,即256个整数,而因为有正负之分,所以最终的范围为-128到127之间。259-256=3。所以最终结果就是3所以用字节时,切忌不可超过其所能够表示的范围,否则造成了错误非常难发现
⑼ Java如何使用多线程读取40M的文件
1,读取文件大小(比如大小是200K)。2,启动5个线程,第一个线程从其实读,第二个线程跳过40在读40。。
⑽ java读取部分文件内容,怎样获取所读取这部分的大小
windows下文件换行默认追加""的字符串,最后一行没有。
StringBuffersb=newStringBuffer();inti=0;Stringfinfo=null;floatnewL0=0;floatorgL=file.length();while((finfo=fr.readLine())!=null){i++;if((sb.length()+finfo.length())<orgL){sb.append(finfo+"");}else{sb.append(finfo);}System.out.println("第"+i+"行:"+finfo+",读取长度:"+newL0+",字符总长度:"+orgL+",当前读取进度:"+(sb.length()/orgL)*100+"%");}