java IO流中exists()和isDirectory()方法的关系

图片说明
可以把后面的条件省略吗

4个回答

本质上,在文件系统上,文件夹也作为文件处理,文件夹是一种特殊的文件
所以如果你要列出文件,同时不希望把文件夹当作文件(在一般电脑用户看来,文件夹不是文件),就需要加上后面的判断。

可以的。因为path不是文件夹的话,listFiles会返回null。
所以效果是一样的。

exists表示此抽象路径名的文件或目录是否存在,
isDirectory是检查此抽象路径是否是文件夹。

 exist但不一定是目录,只是你这里限制了只对存在且非目录的文件进行处理。Java中的File类既可能是方法文件,又可能是文件夹,如果存在才有可能继续判断是什么类型的。
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java中,为什么当File为目录时,file.isDirectory()会返回false

我建了一个删除文件的功能,以下是我写的代码;在路径指定的路径目录里面有文件还有目录,请问为什么输出的时候都是:“删除文件” ``` import java.io.File; public class Recursion2 { public File method(File f) { /* * 判断是否为文件目录 */ if (f.exists() == false) { System.out.println("路径文件不存在"); return null; } /* * 删除文件目录 */ if (delete(f) == true) { return null; } else { File[] files = f.listFiles(); for (File file : files) { method(file); } return method(f); } } private boolean delete(File file) { boolean jubge = file.delete(); if (jubge) { if (file.isDirectory()) { System.out.println("删除目录 " + file); } else { System.out.println("删除文件 " + file); } } return jubge; } public static void main(String[] args) { Recursion2 recursion = new Recursion2(); File f = new File("D:/Desktop/火狐"); recursion.method(f); System.exit(0); } } ``` 以下是文件路径: ![图片说明](https://img-ask.csdn.net/upload/201805/21/1526917769_323816.png) 以下是部分输出结果: 删除文件 D:\Desktop\火狐\Mozilla Firefox\omni.ja 删除文件 D:\Desktop\火狐\Mozilla Firefox\pingsender.exe 删除文件 D:\Desktop\火狐\Mozilla Firefox\platform.ini 删除文件 D:\Desktop\火狐\Mozilla Firefox\plugin-container.exe 删除文件 D:\Desktop\火狐\Mozilla Firefox\plugin-container.exe.sig 删除文件 D:\Desktop\火狐\Mozilla Firefox\plugin-hang-ui.exe 删除文件 D:\Desktop\火狐\Mozilla Firefox\precomplete 删除文件 D:\Desktop\火狐\Mozilla Firefox\qipcap64.dll 删除文件 D:\Desktop\火狐\Mozilla Firefox\removed-files 删除文件 D:\Desktop\火狐\Mozilla Firefox\softokn3.chk 删除文件 D:\Desktop\火狐\Mozilla Firefox\softokn3.dll 删除文件 D:\Desktop\火狐\Mozilla Firefox\ucrtbase.dll 删除文件 D:\Desktop\火狐\Mozilla Firefox\uninstall\helper.exe 删除文件 D:\Desktop\火狐\Mozilla Firefox\uninstall\shortcuts_log.ini 删除文件 D:\Desktop\火狐\Mozilla Firefox\uninstall\uninstall.log 删除文件 D:\Desktop\火狐\Mozilla Firefox\uninstall\uninstall.update 删除文件 D:\Desktop\火狐\Mozilla Firefox\uninstall 删除文件 D:\Desktop\火狐\Mozilla Firefox\update-settings.ini 删除文件 D:\Desktop\火狐\Mozilla Firefox\updater.exe 删除文件 D:\Desktop\火狐\Mozilla Firefox\updater.ini 删除文件 D:\Desktop\火狐\Mozilla Firefox\vcruntime140.dll 删除文件 D:\Desktop\火狐\Mozilla Firefox\xul.dll 删除文件 D:\Desktop\火狐\Mozilla Firefox\xul.dll.sig 删除文件 D:\Desktop\火狐\Mozilla Firefox 删除文件 D:\Desktop\火狐 依据@caozhy的回答我把method改写成以下,结果还是一样啊? ``` public void method(File f) { /* * 判断是否为文件目录 */ if (f.exists() == false) { System.out.println("路径文件不存在"); return; } /* * 删除文件目录 */ if (f.isFile() || f.list().length == 0) { delete(f); } else { File[] files = f.listFiles(); for (File file : files) { method(file); delete(file); } delete(f); } }

用java的IO删除zip文件失败,是何道理?

<p>用java的io生成的zip文件删除不掉,同一目录的csv能删除,以至于这个目录不能删除。在生成完文件后,相关的流也close了。</p> <p>我这里还有个下载这个zip的操作,同样把response.getOutputStream().close(),应该不存在权限的问题。下面是删除的方法:</p> <pre name="code" class="删除方法">public void delAllFile(String path) { File file = new File(path); if (!file.exists()) { return; } if (!file.isDirectory()) { return; } String[] tempList = file.list(); File temp = null; for (int i = 0; i &lt; tempList.length; i++) { if (path.endsWith(File.separator)) { temp = new File(path + tempList[i]); } else { temp = new File(path + File.separator + tempList[i]); } if (temp.isFile()) { temp.delete(); } // if (temp.isDirectory()) { // delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文件 // delFolder(path+"/"+ tempList[i]);//再删除空文件夹 // } } file.delete(); } </pre>

IO流的问题

我最近学了流有关的概念 写了个程序但有些 方法实现不了!代码如下: package com.C; import java.io.*; public class FileDemo { public static void main(String []args) throws IOException { File f=new File("f:\\temp.txt"); FileDemo fil=new FileDemo(); fil.pri(f); } public void pri(File f) throws IOException { if (f==null) return; if (f.exists()) { String type; if(f.isDirectory()) type="目录"; else type="标准文件"; System.out.println("文件类型: "+type); System.out.println("文件绝对路径: "+f.getAbsolutePath()); System.out.println("文件上级目录: "+f.getParent()); System.out.println("文件长度: "+f.length()); return; } System.out.println(f.getName()+"不存在"); if(f.createNewFile()) { String type; if(f.isDirectory()) type="目录"; else type="标准文件"; System.out.println("文件类型: "+type); System.out.println("文件绝对路径: "+f.getAbsolutePath()); System.out.println("文件上级目录: "+f.getParent()); System.out.println("文件长度: "+f.length()); return; } if( f.renameTo(new File("f:\\zhangli.txt"))) System.out.println("文件类型重命名成功!! "); if( f.delete()); System.out.println("文件删除成功! "); } } 为何后面的重命名和删除方法不得实现啊

Java图形界面进度条显示问题

# 这是我最近做的关于java图形界面组件的小练习,主要功能是实现文件复制并显示进度。代码没有报错,运行也无异常,但是在程序运行过程中,进度条没有随着复制进度的增长而增长,一直显示为0%,只有复制完毕才会显示100%。但是我能用getValue()方法获取当前的进度值,而这个值是没有问题的,但是他没有在进度条中显示出来,不知道什么原因。 ## package com.GUI; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JTextField; public class TestControl1 { public static float fileSize = 0; public static float targetFileSize = 0; public static void main(String[] args) { // TODO Auto-generated method stub JFrame jf = new JFrame("带进度条的文件复制"); jf.setSize(500, 150); jf.setLocationRelativeTo(null); jf.setLayout(null); JPanel copyPanel = new JPanel(); copyPanel.setBounds(6, 10, 450, 40); copyPanel.setLayout(new FlowLayout()); JLabel srcFileAdress = new JLabel("源文件地址:"); JTextField adressText = new JTextField("f:/jdk"); adressText.setPreferredSize(new Dimension(100, 25)); JLabel copyLabel = new JLabel("复制到:"); JTextField copyText = new JTextField("f:/jdk2"); copyText.setPreferredSize(new Dimension(100, 25)); copyPanel.add(srcFileAdress); copyPanel.add(adressText); copyPanel.add(copyLabel); copyPanel.add(copyText); JPanel copyStartPanel = new JPanel(); copyStartPanel.setBounds(10, 60, 450, 50); copyStartPanel.setLayout(new FlowLayout()); JButton startCopyButton = new JButton("开始复制"); startCopyButton.setPreferredSize(new Dimension(100, 30)); JLabel fileCopyProgress = new JLabel("文件复制进度"); JProgressBar fileProgress = new JProgressBar(); fileProgress.setPreferredSize(new Dimension(126, 31)); fileProgress.setMaximum(100); fileProgress.setStringPainted(true); copyStartPanel.add(startCopyButton); copyStartPanel.add(fileCopyProgress); copyStartPanel.add(fileProgress); jf.add(copyPanel); jf.add(copyStartPanel); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); File srcFile = new File(adressText.getText()); calclateAllFilesize(srcFile); File targetFile = new File(copyText.getText()); startCopyButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub copyTo(srcFile, targetFile,fileProgress); } }); } public static void copyTo(File file1, File file2,JProgressBar showProgress) { File srcFile = file1; File targetFile = file2; JProgressBar fileProgress = showProgress; if (!srcFile.exists()) { return; } File[] allFile = srcFile.listFiles(); for (File each : allFile) { File nextFile = new File(targetFile.getAbsolutePath(), each.getName()); if (each.isDirectory()) { nextFile.mkdirs(); copyTo(each, nextFile,fileProgress); } else { try( FileReader fr = new FileReader(each); BufferedReader br = new BufferedReader(fr); FileWriter fw = new FileWriter(nextFile); PrintWriter pw = new PrintWriter(fw); ){ while(true){ String line = br.readLine(); if(line == null ){ break; } pw.println(line); pw.flush(); } }catch(IOException e){ e.printStackTrace(); } targetFileSize += (float)each.length(); int current = (int)(targetFileSize/fileSize*100); fileProgress.setValue(current); System.out.println(fileProgress.getValue()); if(current == 100){ JOptionPane.showMessageDialog(showProgress, "复制完毕"); } } } } public static void calclateAllFilesize(File file) { if (file.isFile()) { fileSize += (float)file.length(); } if (file.isDirectory()) { File[] fs = file.listFiles(); for (File f : fs) { calclateAllFilesize(f); } } } }

java解压时报错“找不到文件”

今天做文件解压,学习了网上的代码后,模仿着写了一个,但是问题很头疼,报错找不到文件,然后用同样路径遍历,能遍历出文件,也试了别人的工具类,仍未解决问题,断点显示在new ZipFile(String path)时报错,下面贴完整代码: import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; /** * @author zy 2017/5/18 */ public class Unzip { public void DataHandle(String unzipPath) { final int SIZE = 2048; String savepath = unzipPath.substring(0, unzipPath.lastIndexOf(".")) + File.separator; InputStream inputStream = null; FileOutputStream fileOutputStream = null; BufferedOutputStream bufferedOutputStream = null; ZipFile zipFile = null; File unzipDir = new File(savepath); if (!unzipDir.exists()) { unzipDir.mkdirs(); } try { zipFile = new ZipFile(unzipPath); Enumeration<?> entries = zipFile.entries(); while (entries.hasMoreElements()) { byte buffer[] = new byte[SIZE]; ZipEntry entry = (ZipEntry) entries.nextElement(); String filename = entry.getName(); boolean ismkdir = false; if (filename.lastIndexOf("/") != -1) { ismkdir = true; } filename = savepath + filename; File file = null; if (entry.isDirectory()) { file = new File(filename); file.mkdirs(); continue; } file = new File(filename); if (file.exists()) { if (ismkdir) { new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); } } file.createNewFile(); inputStream = zipFile.getInputStream(entry); fileOutputStream = new FileOutputStream(file); bufferedOutputStream = new BufferedOutputStream(fileOutputStream, SIZE); int count; while ((count = inputStream.read(buffer)) > -1) { bufferedOutputStream.write(buffer, 0, count); } bufferedOutputStream.flush(); bufferedOutputStream.close(); fileOutputStream.close(); } zipFile.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (bufferedOutputStream != null) { bufferedOutputStream.close(); } if (fileOutputStream != null) { fileOutputStream.close(); } if (inputStream != null) { inputStream.close(); } if (zipFile != null) { zipFile.close(); } } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { Unzip unzip = new Unzip(); unzip.DataHandle(new String("‪E:"+File.separator+"test"+File.separator+"www.zip")); } }

java 动态加载class问题

java 动态加载class;写了A B类,都没有main方法。其中 A类中有静态方法f,其功能是动态加载类B的class文件。类B中有个函数;在idea中运行是没问题的 A.T.sum(2,7)) 可以调用。但是一旦把这个程序打成jar包后。在其他工程里引入jar包,就不能动态加载该类B。请大神指导下 package fff.BB; /** * Created by ***** on 2017/6/22. */ public class B { public int sum(int x, int y){ return x+y; } } import fff.BB.B; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLDecoder; import java.util.Enumeration; import java.util.LinkedHashSet; import java.util.Set; /** * Created by liweidong on 2017/6/22. */ public class A { public static B T = null; static { registerReset(); } private static void registerReset(){ Set<Class<?>> classSet = loadClass(); for(Class cl : classSet){ try { T = (B) cl.newInstance(); } catch (Exception e) { e.printStackTrace(); } } } private static Set<Class<?>> loadClass(){ String packageDir = "fff.BB"; Set<Class<?>> classSet = new LinkedHashSet<Class<?>>(); try { Enumeration<URL> dirs = Thread.currentThread().getContextClassLoader().getResources(packageDir.replace('.','/')); while (dirs.hasMoreElements()){ URL url = dirs.nextElement(); String packagePath = URLDecoder.decode(url.getFile(),"UTF-8"); Class<?> loadClass = findClass(packageDir,packagePath); if(loadClass != null){ classSet.add(loadClass); } } }catch (IOException e){ } return classSet; } private static Class<?> findClass(String packageName,String packagePath){ File dir = new File(packagePath); if(!dir.exists() || !dir.isDirectory()){ return null; } File[] dirfiles = dir.listFiles(file -> (file.getName().endsWith(".class"))); for(File file : dirfiles){ String className = file.getName().substring(0, file.getName().length() - ".class".length()); Class<?> clazz = null; try { clazz = Thread.currentThread().getContextClassLoader().loadClass(packageName + "." + className); if(clazz != null){ return clazz; } } catch (ClassNotFoundException e) { e.printStackTrace(); } } return null; } }

java用limit循环读取mysql直到全部读完,并能显示读了多少条

数据库数据很多,每次读5000条左右,用分页的方式循环读完,下面是测试代码,现在需要分页的代码,可以写在我发的测试代码上面,尽量详细,谢谢。 package webtest; import java.sql.*; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.File; public class test5{ static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/gumysql"; static final String USER = "root"; static final String PASS = "123456"; public static final String FILE_NAME = "again1.txt";//要创建的文件名 public static final String fn = "F:/NEWtest/";//文件指定存放的路径 public static void creatFile(String fn, String fileName) { File folder = new File(fn); //文件夹路径不存在 if (!folder.exists() && !folder.isDirectory()) { System.out.println("文件夹路径不存在,创建路径:" + fn); folder.mkdirs(); } else { System.out.println("文件夹路径存在:" + fn); } // 如果文件不存在就创建 File file = new File(fn + fileName); if (!file.exists()) { System.out.println("文件不存在,创建文件:" + fn+ fileName); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } else { System.out.println("文件已存在,文件为:" + fn+ fileName); } } public static void wf(String file, String conent) { BufferedWriter out = null; try { out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(file, true))); out.write(conent+"\r\n"); } catch (Exception e) { e.printStackTrace(); } finally { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ creatFile(fn, FILE_NAME); Class.forName("com.mysql.jdbc.Driver"); System.out.println("连接数据库..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); System.out.println(" 实例化Statement对象..."); stmt = conn.createStatement(); String sql; sql = "SELECT id, name, url ,country FROM websites "; ResultSet rs = stmt.executeQuery(sql); String fn = "F://NEWtest//again1.txt"; wf(fn,"ID ,站点名称, 站点,country."); while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); String url = rs.getString("url"); String country = rs.getString("country"); System.out.print("ID: " + id); System.out.print(", 站点名称: " + name); System.out.print(", 站点 URL: " + url); System.out.print(", country: " + country); System.out.print("\n"); wf(fn,id+"," + name+ "," + url+ "," + country); } rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ se.printStackTrace(); }catch(Exception e){ e.printStackTrace(); }finally{ try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ } try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } System.out.println("Goodbye!"); } }

java File.listFiles() 返回值无法操作的问题

File[] files = myfileFile.listFiles();//**这个返回值无法操作,是怎么回事。** for(File f : files) { System.out.println("1"); if(f.exists()) //这里我的测试文件是存在的,但exists()返回false。 { System.out.println("10"); } if(f.canRead()) { System.out.println("11"); } if(f.canWrite()) { System.out.println("12"); } if(f.isDirectory()) { System.out.println("2"); } if(f.isFile()){ System.out.println("3"); } }

一个java解压文件的递归调用 急

下面是接压单个压缩文件的代码,那请问,如果我压缩文件里面还有压缩文件怎么递归调用全部接压呢?接压后应按照接压前的包路径一致。须急用,请指教 [code="java"] import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class ZipToFile { /** * 将文件解压缩 * @param sZipPathFile 需要解压的文件 * @param sDestPath 解压后的文件路径 * @return */ public static boolean zipToFile(String sZipPathFile, String sDestPath) { boolean flag = false; ArrayList allFileName = new ArrayList(); try { // 先指定压缩档的位置和档名,建立FileInputStream对象 FileInputStream fins = new FileInputStream(sZipPathFile); // 将fins传入ZipInputStream中 ZipInputStream zins = new ZipInputStream(fins); ZipEntry ze = null; byte ch[] = new byte[256]; while ((ze = zins.getNextEntry()) != null) { File zfile = new File(sDestPath + ze.getName()); File fpath = new File(zfile.getParentFile().getPath()); if (ze.isDirectory()) { if (!zfile.exists()) zfile.mkdirs(); zins.closeEntry(); } else { if (!fpath.exists()) fpath.mkdirs(); FileOutputStream fouts = new FileOutputStream(zfile); int i; allFileName.add(zfile.getAbsolutePath()); while ((i = zins.read(ch)) != -1) fouts.write(ch, 0, i); zins.closeEntry(); fouts.close(); } } fins.close(); zins.close(); flag = true; } catch (Exception e) { System.err.println("Extract error:" + e.getMessage()); } return flag; } public static void main(String[] args){ String sZipPathFile = "c:/test.zip"; String sDestPath = "c:/"; ZipToFile.zipToFile(sZipPathFile, sDestPath);//将c盘下的test.zip文件解压到c盘下 } } [/code]

使用eclipse用TCP协议创建服务器和客户端,从客户端向服务器传文件

服务器代码: package com.xfr.test; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class Test2_UpLoadServer { /**  * @param args  * @throws IOException   */ public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(6666); //创建服务器,绑定端口号777 System.out.println("启动服务器,端口号为6666!!!"); while(true){ final Socket socket = server.accept();  //接收客户端的请求,有可能接收多个客户端的请求,所以用多线程 new Thread(){ public void run(){ try { InputStream  is = socket.getInputStream(); //拿到客户端的流 BufferedReader br = new BufferedReader(new InputStreamReader(is)); //用Buffer缓冲区更好读取 PrintStream ps = new PrintStream(socket.getOutputStream()); //用PrintStream的好处是可以写字符也可以写字节 String fileName = br.readLine();//接收到要上传的文件的名字 File dir = new File("upload"); //创建一个文件夹来存放文件 dir.mkdir(); File file = new File(dir,fileName); //对文件名字进行封装来进行判断操作 if(file.exists()){ ps.println("存在"); //若文件在服务器中存在,给与客户端提示 socket.close(); }else{ //文件在服务器中没有,则开始接收 FileOutputStream fos = new FileOutputStream(file); byte[] arr = new byte[8192]; int len; while(( len = is.read(arr)) != -1){ fos.write(arr, 0, len); } fos.close(); //记得关流和关端口 socket.close(); } } catch (IOException e) { e.printStackTrace(); } } }.start(); } } } 客户端代码: package com.xfr.test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Test2_UploadClient { /**  * 向服务器上传文件,文件路径从键盘获取  * @param args  * @throws IOException   * @throws UnknownHostException   */ public static void main(String[] args) throws UnknownHostException, IOException { Socket socket = new Socket("169.254.33.252",6666);//创建客户端 File file = getFile();//获取文件 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintStream ps = new PrintStream(socket.getOutputStream()); ps.println(file.getName()); //将文件名字传给服务器,服务器再对其进行判断 String result = br.readLine(); if("存在".equals(result)){ System.out.println("该文件在服务器中已经存在,请不要重复上传!"); socket.close(); return; } else { //文件不存在的话,开始读取该文件 FileInputStream fis = new FileInputStream(file); byte[] arr = new byte[8192];  int len; while((len = fis.read(arr)) != -1){ ps.write(arr, 0, len);//向服务器传 } fis.close(); socket.close();//F:\Test\aaa.txt } } public static File getFile() { Scanner sc = new Scanner(System.in); while(true){ String s = sc.nextLine(); File file = new File(s); if(!file.exists()){ System.out.println("您要上传的文件不存在!重新输入文件路径:"); } else if(file.isDirectory()){ System.out.println("您输入的是文件夹路径!重新输入文件路径:"); } else{ return file; } } } } ###执行后输入路径,路径正确的话程序不会停下来,红方块一直在 ![图片说明](https://img-ask.csdn.net/upload/201710/25/1508926710_596979.png) 手动点掉红方块后刷新项目 ![图片说明](https://img-ask.csdn.net/upload/201710/25/1508926743_190021.png) 可以看到eclipse当前路径多了要拷贝的文件,可是文件字节大小为0 ![图片说明](https://img-ask.csdn.net/upload/201710/25/1508926754_412742.png) 更多

java 为什么Dialog中的Label不显示?

为什么 在Dialog中add 一个Lable,但运行的时候并没有显示? 求大神 import java.awt.Button; import java.awt.Dialog; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; public class MyFrame { private Frame frame ; private Button butCount; private Button butClear; private TextField tf ; private TextArea ta ; private TextField answer; public void init() { //定义组建 frame = new Frame("统计代码行数软件--by Owen"); butCount = new Button("统计"); butClear = new Button("结果清零"); tf = new TextField("请输入要计算的文件夹路径" , 60); tf.selectAll(); //设置将初始的"请输入要计算的文件夹路径"全选 ta = new TextArea(25 , 75); answer = new TextField(40); //向面板添加组建 frame.add(tf); frame.add(butCount); frame.add(butClear); frame.add(ta); frame.add(answer); //设置面板 frame.setVisible(true); frame.setBounds(300,100,630,500); frame.setLayout(new FlowLayout()); //引入事件 eventFrame(); eventButton(); eventText(); } //窗体事件 public void eventFrame() { //添加面板监听器 frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } }); } //按钮事件 public void eventButton() { //添加butCount监听器 butCount.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { action(); } }); //添加butClear监听器 butClear.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { Print.count = 0; ta.setText(""); tf.setText(""); answer.setText(""); } }); } //文本事件 public void eventText() { tf.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER) action(); } }); } //操作部分 private void action() { String address = tf.getText(); //健壮性检验 File check = new File(address); if( !(check.exists() && check.isDirectory() )) popDialog(address); String[] files = Print.traDir(address); for(int i=0 ; i<files.length ; i++) { ta.append(files[i]); } ta.append("\r\n"); ta.append("\r\n"); ta.append("----------------------------------------------"); ta.append("\r\n"); ta.append("\r\n"); int count = Print.count; answer.setText("结果: "+count+" 行代码"); } //弹出对话框------------------这里没有弹出------------------????????????????????? private void popDialog(String address) { //定义弹出窗口口 Dialog wrongDialog = new Dialog(frame,"地址错误提示", false); Label wrongLabel = new Label(); Button wrongButton = new Button("确定"); wrongDialog.add(wrongLabel); wrongDialog.add(wrongButton); wrongDialog.setBounds(320 , 250 , 600 , 150); wrongDialog.setLayout(new FlowLayout()); wrongDialog.setVisible(true); String info = "输入地址 \" "+address+" \"有误,请重新输入"; wrongLabel.setText(info); popEvent(wrongDialog ,wrongLabel ,wrongButton); } //弹出对话框 --监听器 private void popEvent(Dialog wrongDialog ,Label wrongLabel ,Button wrongButton) { wrongDialog.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { wrongDialog.setVisible(false); } }); wrongButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { wrongDialog.setVisible(false); } }); } }

java在自定义事件监听器是遇到的问题

import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Queue; import java.util.*; import java.awt.*; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import static java.awt.BorderLayout.*; public class FileSearcher { public static void findFiles(String baseDirName, String targetFileName, List fileList) { String tempName=null; File baseDir=new File(baseDirName); if(!baseDir.exists()||!baseDir.isDirectory()) { System.out.println("文件查找失败"+baseDirName+"不是一个目录"); } else { String[] filelist=baseDir.list(); for(int i=0;i<filelist.length;i++) { File readfile=new File(baseDirName+"\\"+filelist[i]); if(!readfile.isDirectory()) { tempName=readfile.getName(); if(FileSearcher.wildcardMatch(targetFileName, tempName)) { fileList.add(readfile.getAbsoluteFile()); } } else if(readfile.isDirectory()) { findFiles(baseDirName+"\\"+filelist[i],targetFileName,fileList); } } } } private static boolean wildcardMatch(String pattern ,String str) { int patternLength=pattern.length(); int strLength=str.length(); int strIndex=0; char ch; for(int patternIndex=0;patternIndex < patternLength; patternIndex++) { ch=pattern.charAt(patternIndex); if(ch=='*') { while(strIndex<strLength) { if(wildcardMatch(pattern.substring(patternIndex + 1),str.substring(strIndex))) { return true; } strIndex++; } } else if(ch=='?') { strIndex++; if(strIndex>strLength) { return false; } } else { if(strIndex>=strLength||(ch!=str.charAt(strIndex))) { return false; } strIndex++; } } return (strIndex==strLength); } public void init() { JFrame jf=new JFrame(); JPanel jp=new JPanel(); TextArea jta=new TextArea(20,30); JTextField jtf=new JTextField(10); JTextField jtf1=new JTextField(10); JButton jb=new JButton("搜索"); jp.add(jtf); jp.add(jtf1); jp.add(jb); jf.setLayout(new BorderLayout()); jf.add(jta,SOUTH); jf.add(jp,NORTH); jf.pack(); jf.setVisible(true); myListener Listener=new myListener(this); jtf1.addActionListener(Listener); jb.addActionListener(Listener); } public static void main(String[] args) { new FileSearcher().init(); } } class myListener implements ActionListener { public void actionPerformed(ActionEvent e) { jta.setText(""); String baseDIR=jtf.getText(); String fileName=jtf1.getText(); List resultList=new ArrayList(); FileSearcher.findFiles(baseDIR,fileName,resultList); if(resultList.size()==0) { System.out.println("worng"); } else { for(int i=0;i<resultList.size();i++) { jta.append(resultList.get(i).toString()+"\r\n"); System.out.println(resultList.get(i)); } } } } 错误提示 ---------- 编译java ---------- FileSearcher.java:97: 错误: 无法将类 myListener中的构造器 myListener应用到给定类型; myListener Listener=new myListener(this); ^ 需要: 没有参数 找到: FileSearcher 原因: 实际参数列表和形式参数列表长度不同 FileSearcher.java:114: 错误: 找不到符号 jta.setText(""); ^ 符号: 变量 jta 位置: 类 myListener FileSearcher.java:115: 错误: 找不到符号 String baseDIR=jtf.getText(); ^ 符号: 变量 jtf 位置: 类 myListener FileSearcher.java:116: 错误: 找不到符号 String fileName=jtf1.getText(); ^ 符号: 变量 jtf1 位置: 类 myListener FileSearcher.java:128: 错误: 找不到符号 jta.append(resultList.get(i).toString()+"\r\n"); ^ 符号: 变量 jta 位置: 类 myListener 注: FileSearcher.java使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 5 个错误 输出完成 (耗时 1 秒) - 正常终止

java里复制文件采用多文件写法,为何我无法调用类函数?

小弟在写一个java程序,其中一个要求是可以检索我输入的文件目录以及复制它到 一个新的目录中,我是采用多文件的方式来完成的。但当我运行时却发现我调用的函数却报错。 这是第一个函数,我想法是用菜单的形式,但这句话报错 FileUtils.copySrcPathToDestPath (srcFile, destFile); 这里的FileUtils是我第二个函数,有无大神可以看看 ``` package shiyan3; import java.io.File; import java.io.FileReader; import java.util.Scanner; public class Notepad { private static String filePath; private static String message =""; public static void main(String[] args) throws Exception { Scanner sc =new Scanner(System.in); System.out.println("1:打开文件 2:复制文件 3:退出"); while (true) { System.out.println("请输入指令"); int command = sc.nextInt(); switch (command) { case 1: openFile(); break; case 2: copyFile(); break; case 3: exit(); break; default: System.out.println("输入错误"); } } } private static void openFile() throws Exception { message = ""; Scanner sc = new Scanner(System.in); System.out.println("请输入打开文件位置:"); filePath =sc.next(); if (filePath!= null && !filePath.endsWith(".txt")) { System.out.println("请选择文本文件!"); return; } FileReader in = new FileReader(filePath); char [] charArray =new char[1024]; int len =0 ; StringBuffer sb = new StringBuffer(); while ((len=in.read(charArray)) !=-1) { sb.append(charArray); } message =sb.toString(); System.out.println("打开文件内容"+"\r\n"+message); in.close(); } private static void copyFile() { Scanner sc =new Scanner(System.in); System.out.println("请输入您刚刚打开文件的绝对路径"); String srcDirectory=sc.next(); File srcFile =new File(srcDirectory); if (!srcFile.exists() || !srcFile.isDirectory()) { System.out.println("无效目录"); return; } System.out.println("请输入您想要将文件复制到的位置:"); String destDirectory=sc.next(); File destFile=new File(destDirectory); if(!destFile.exists() || !destFile.isDirectory()) ;{ System.out.println("无效位置!"); return; } FileUtils.copySrcPathToDestPath (srcFile, destFile); } private static void exit() { System.out.println("您已退出系统!"); } } ``` ``` package shiyan3; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class FileUtils { public static void copySrcPathToDestPath(File srcDir,File destDir) throws Exception { File[] files =srcDir.listFiles(); for(int i=0;i<files.length;i++) { File copiedFile =new File(destDir,files[i].getName()); if (files[i].isDirectory()) { if(!copiedFile.mkdirs()) { System.out.println("无法创建"+copiedFile); return; } copySrcPathToDestPath(files[i],copiedFile); }else { FileInputStream input =new FileInputStream(files[i]); FileOutputStream output =new FileOutputStream (copiedFile); byte[] buffer = new byte[1024]; int n = 0; while ((n= input.read(buffer))!=-1);{ output.write(buffer,0,n); } input.close(); output.close(); } } } } ```

请大神看一下我这个JAVA里面哪里有问题啊,为什么 public static void main(String[] args) 报错

import java.io.*; import java.io.File; public class FileOperation{ public static void main(String args[]) { try { BufferedReader din=new BufferedReader(new InputStreamReader(System.in)); String sdir="D:\\test"; String sfile; File Fdir1=new File(sdir); if(Fdir1.exists() && Fdir1.isDirectory()) { System.out.println("There is a directory"+sdir+"exists."); for(int i=0;i<Fdir1.list().length;i++) System.out.println((Fdir1.list())[i]); File Fdir2=new File("D:\\test\\temp"); if(!Fdir2.exists()) Fdir2.mkdir(); System.out.println(); System.out.println("Now the new list after create a new dir"); for(int i=0;i<Fdir1.list().length;i++) System.out.println((Fdir1.list())[i]); System.out.println(); System.out.println("Enter a file name in this directory:"); sfile=din.readLine(); File Ffile=new File(Fdir1,sfile); if(Ffile.isFile()) { System.out.println("File"+Ffile.getName()+"in Path" +Ffile.getPath()+"is"+Ffile.length() +"in length."); } }else System.out.println("the directory doesn''t exist!"); } catch(Exception e) { System.out.println(e.toString()); } } } ![图片说明](https://img-ask.csdn.net/upload/201811/10/1541841612_643993.jpg)

想通过ZipInStream类将压缩文件解压到指定的文件夹中

想通过ZipInStream类将压缩文件解压到指定的文件夹中 源程序是: import java.io.*; import java.util.zip.*; public class Decompressing { // 创建文件 public static void main(String[] temp) { ZipInputStream zin; // 创建ZipInputStream对象 try { // try语句捕获可能发生的异常 zin = new ZipInputStream(new FileInputStream("F:/hello.zip")); // 实例化对象,指明要进行解压的文件 ZipEntry entry = zin.getNextEntry(); // 获取下一个ZipEntry while (((entry = zin.getNextEntry()) != null) && !entry.isDirectory()) { // 如果entry不为空,并不在同一目录下 File file = new File("F:\\" + entry.getName()); // 获取文件目录 System.out.println(file); if (!file.exists()) { // 如果该文件不存在 file.mkdirs();// 创建文件所在文件夹 file.createNewFile(); // 创建文件 } zin.closeEntry(); // 关闭当前entry System.out.println(entry.getName() + "解压成功"); } zin.close(); // 关闭流 } catch (Exception e) { e.printStackTrace(); } } } 可是程序运行不了,有以下异常: java.lang.IllegalArgumentException: MALFORMED at java.util.zip.ZipCoder.toString(ZipCoder.java:58) at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:300) at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:122) at 练习.Decompressing.main(Decompressing.java:48) F盘里面有hello.zip 希望大神帮忙解答一下,特别是那个entry和getNextEntry到底是什么意思,没弄懂啊

java 关于解压rar文件 代码有点问题 帮改正

[color=red]问题:目前这个代码执行第一次的时候就可以解压rar文件,但是第二次就无效了。测试可以执行一次后servlet操作,删除解压后解压后的文件,在执行,rar文件就不解压了。我用的是tomcat服务器。 [/color] 文件1:UnrarServlet 代码 [code="java"] package com.jh.upload.servlet; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; @SuppressWarnings("serial") public class UnrarServlet extends HttpServlet { private static String unrarCmd = "C:\\Program Files\\WinRAR\\unrar x"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } @SuppressWarnings( { "static-access", "deprecation" }) public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("gbk"); response.setContentType("text/html;charset=gbk"); // 设置字符编码为UTF-8, 这样支持汉字显示 response.setCharacterEncoding("gbk"); //文件名 传进来或者取过来 String file = "系统管理.rar"; PrintWriter out = response.getWriter(); String rarFileName = request.getRealPath("/test") + "\\" + file; String destDir = request.getRealPath("/test"); File f = new File(rarFileName); if ((!f.exists()) && (f.length() <= 0)) { out.println("要解压的文件不存在!<p />"); out.println("<a href='MyJsp.jsp' >返回</a>"); return; } unrarCmd += " " + rarFileName + " " + destDir; try { Runtime rt = Runtime.getRuntime(); Process p = rt.exec(unrarCmd); StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(),"ERROR"); errorGobbler.start(); StreamGobbler outGobbler = new StreamGobbler(p.getInputStream(),"STDOUT"); // kick off stdout outGobbler.start(); p.waitFor(); System.out.println("进程:--"+p.exitValue()); } catch (Exception e) { System.out.println(e.getMessage()); } //判断目录是否存在 String fileName = file.substring(0, file.lastIndexOf(".")); File filePath = new File(destDir + "\\" + fileName); if (filePath.isDirectory()) { out.println("<p />解压成功!"); } else { out.println("<p />解压失败,请手工解压!"); } out.println("<p /><a href='MyJsp.jsp' >返回</a>"); return; } } [/code] 文件2:StreamGobbler.java [code="java"] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; public class StreamGobbler extends Thread { InputStream is; String type; OutputStream os; StreamGobbler(InputStream is, String type) { this(is, type, null); } StreamGobbler(InputStream is, String type, OutputStream redirect) { this.is = is; this.type = type; this.os = redirect; } public void run() { try { PrintWriter pw = null; if (os != null) pw = new PrintWriter(os); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) { if (pw != null) pw.println(line); System.out.println(type + ">" + line); } if (pw != null) pw.flush(); } catch (IOException ioe) { ioe.printStackTrace(); } } } [/code] [b]问题补充:[/b] 我之前也用 java-unrar-0.2 这种方式。但是没有弄好。 这个例子给我灵感了,谢谢。 ----------------------------------------------- public class Test { /** * 解压缩rar文件 * * @param rarFileName * @param extPlace */ public static boolean decompressionRarFiles(String rarFileName, String extPlace) { boolean flag = false; Archive archive = null; File out = null; File file = null; File dir = null; FileOutputStream os = null; FileHeader fh = null; String path, dirPath = ""; try { file = new File(rarFileName); archive = new Archive(file); } catch (RarException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } finally { if (file != null) { file = null; } } if (archive != null) { try { fh = archive.nextFileHeader(); while (fh != null) { path = (extPlace + fh.getFileNameString().trim()).replaceAll("\\\\", "/"); int end = path.lastIndexOf("/"); if (end != -1) { dirPath = path.substring(0, end); } try { dir = new File(dirPath); if (!dir.exists()) { dir.mkdirs(); } } catch (RuntimeException e1) { e1.printStackTrace(); } finally { if (dir != null) { dir = null; } } if (fh.isDirectory()) { fh = archive.nextFileHeader(); continue; } out = new File(extPlace + fh.getFileNameString().trim()); try { os = new FileOutputStream(out); archive.extractFile(fh, os); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (RarException e) { e.printStackTrace(); } finally { if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } if (out != null) { out = null; } } fh = archive.nextFileHeader(); } } catch (RuntimeException e) { e.printStackTrace(); } finally { fh = null; if (archive != null) { try { archive.close(); } catch (IOException e) { e.printStackTrace(); } } } flag = true; } return flag; } public static void main(String[] args) { String absPath="D:\\apache-tomcat-6.0.20\\webapps\\upload\\test\\系统管理.rar"; //文件绝对目录 String toPath ="D:\\apache-tomcat-6.0.20\\webapps\\upload\\test\\"; //文件目录 boolean flag = new Test().decompressionRarFiles(absPath, toPath); System.out.println("flag ---"+flag); } } -------------------------------------------------------------- 上边是实现方式可以看一下。

求解我的程序为什么不能实现我要的功能?

package com.dongjunjie.student; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Scanner; //此类是针对递归的复习 public class Tset2 { // 需求:在控制台输入路径名并返回此目录下的所有指定后缀文件名的文件名,并将其文件名存储到指定的文件当中. public static void main(String[] args) throws IOException { System.out.println("请输入您的文件夹名称:"); //String endWithString; getFilesName(getFile()); } public static File getFile() { // 获取符合条件的文件夹对象. Scanner sc = new Scanner(System.in); while (true) { String s = sc.nextLine(); File file = new File(s); if (file.exists()) { if (file.isFile()) { System.out.println("您输入的是文件名,不是文件夹路径,请重新输入:"); } else { return file; } } else { System.out.println("您输入的路径名称不存在,请重新输入一个新的文件夹的路径:"); } } } public static void getFilesName(File file) throws IOException{ FileOutputStream fos = new FileOutputStream("endwith.txt"); File[] files = file.listFiles(); for(File file1:files){ if(file1.isDirectory()){ getFilesName(file1); }else if(file1.getName().endsWith(".java")){ System.out.println(file1.getName()); fos.write(file1.getName().getBytes()); //System.out.println("---------------"); } } fos.close(); } }

一个Java小程序,复制文件的,有界面,为何运行没反应?没报错

程序分为界面和功能两个类,代码较长,我做了必要注释,请耐心看完,请大神指出运行没反应的原因(尽量不要写新代码给我,在原代码上修正,便于我理解) 实在没积分了,无法悬赏 界面部分 ``` /* * 界面 * @version 1.0 * 主要功能: 将查找目录内(含子目录)的指定后缀名文件复制到输出目录 */ package check; import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class appearance { static File OldPath=null; //定义文件对象 static File NewPath=null; static String LastName=null; //定义后缀名对象 static int x=0; //用于对话框判断 public static void main(String[] args){ Frame f=new Frame("文件查找"); Panel p1=new Panel(); Panel p2=new Panel(); Panel p3=new Panel(); Label la1=new Label("查找目录:"); Label la2=new Label("输出目录:"); Label la3=new Label("后缀名:"); TextField t1=new TextField(50); TextField t2=new TextField(50); TextField t3=new TextField(20); Button b1=new Button("浏览"); Button b2=new Button("浏览"); Button b3=new Button("确定"); JFileChooser choose1=new JFileChooser(); JFileChooser choose2=new JFileChooser(); choose1.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); choose2.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); t1.setEditable(false); t2.setEditable(false); f.setBounds(200,150,520,200); p1.setLayout(new FlowLayout()); p2.setLayout(new FlowLayout()); p3.setLayout(new FlowLayout()); f.setLayout(new BorderLayout()); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ f.setVisible(false); System.exit(0); } }); b1.addActionListener(new ActionListener(){ //按钮监听(文件选择器) public void actionPerformed(ActionEvent arg0) { choose1.showDialog(new JLabel(),"选择文件夹"); OldPath=choose1.getSelectedFile(); t1.setText(OldPath.getAbsolutePath()); } }); b2.addActionListener(new ActionListener(){ //按钮监听(文件选择器) public void actionPerformed(ActionEvent arg){ choose2.showDialog(new JLabel(),"选择文件夹"); NewPath=choose2.getSelectedFile(); t2.setText(NewPath.getAbsolutePath()); } }); b3.addActionListener(new ActionListener(){ //按钮监听(调用功能模块) public void actionPerformed(ActionEvent arg1){ LastName=t3.getText(); if(t1.getText().trim().length()<1||t2.getText().trim().length()<1||t3.getText().trim().length()<1){//对话框处理 x=JOptionPane.showConfirmDialog(f,"请输入完整","提示",JOptionPane.OK_CANCEL_OPTION,JOptionPane.ERROR_MESSAGE); if(x==JOptionPane.OK_OPTION) System.exit(0); } Function.cheek(OldPath, NewPath); //调用功能方法,传递文件对象参数 } }); f.add(p1,"North"); //添加组件 f.add(p2,"Center"); f.add(p3,"South"); p1.add(la1); p1.add(t1); p1.add(b1); p2.add(la2); p2.add(t2); p2.add(b2); p2.add(la3); p2.add(t3); p3.add(b3); f.setVisible(true); } } ``` 功能部分 ``` /* * 功能 * @version 1.0 */ package check; import java.io.*; class Function { static BufferedInputStream bis=null; //文件输入输出流,用于复制文件 static BufferedOutputStream bos=null; public static void cheek(File OldPath,File NewPath){ //功能方法 接受界面传值 if(!NewPath.exists()){ NewPath.mkdir(); } ergodic(OldPath,NewPath); //递归,扫描子目录内所有文件 } private static void ergodic(File oldPath, File newPath) { File[] files=oldPath.listFiles(); for(File f:files){ if(f.isDirectory()){ ergodic(f,newPath); } if(f.getName().endsWith(appearance.LastName)){ copy(f,newPath); //文件复制, } } } private static void copy(File f, File newPath) { //文件复制 String Name=newPath.getName(); File newfile=new File(f,Name); try{ bis=new BufferedInputStream(new FileInputStream(f)); bos=new BufferedOutputStream(new FileOutputStream(newfile)); byte[] by=new byte[1024]; int len=0; while((len=bis.read(by))!=-1){ bos.write(by,0,len); } bos.close(); bis.close(); }catch(IOException e){ } } } ```

求解读JAVA代码,为什么MP4文件不能播放?

下载的一个压缩包(压缩包内含mp4文件、字幕文件等),压缩包有密码,android程序用密码打开压缩文件,并执行一系列操作后,程序自动播放压缩包内的MP4文件,但MP4文件不能直接使用播放器播放,求解答如何能让mp4文件用播放器播放 。。。谢谢 。。。这里是完整代码下载链接:[点击下载完整代码](http://pan.baidu.com/s/1hqELVms),(用JD-GUI直接查看Jar内的代码、0000208821-DF705DD4是去掉了扩展名的压缩文件) 下面是部分代码(代码位于jar文件内的nc.class): ``` import android.widget.Toast; import com.is.piano.base.ISApp; import com.ispiano.crc64.Algorithm; import java.io.File; import java.io.PrintStream; import java.util.List; import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.exception.ZipException; import net.lingala.zip4j.model.FileHeader; import net.lingala.zip4j.model.ZipParameters; public class nc { public static boolean a(String paramString1, String paramString2) { long l1 = System.currentTimeMillis(); ZipFile localZipFile; File localFile; try { localZipFile = new ZipFile(paramString1); localZipFile.setFileNameCharset("GBK"); if (localZipFile.isValidZipFile()) break label101; mh.b(paramString1); throw new ZipException("\u538B\u7F29\u6587\u4EF6\u4E0D\u5408\u6CD5,\u53EF\u80FD\u88AB\u635F\u574F."); } catch (ZipException localZipException) { localZipException.printStackTrace(); localFile = new File(paramString2); if (!localFile.exists()) break label99; } File[] arrayOfFile; int i; if (localFile.isDirectory()) { arrayOfFile = localFile.listFiles(); i = arrayOfFile.length; } for (int j = 0; ; j++) { if (j >= i) { label99: return false; label101: if (localZipFile.isEncrypted()) localZipFile.setPassword("ISPiano Zhang"); List localList = localZipFile.getFileHeaders(); long l2 = 0L; for (int k = 0; ; k++) { if (k >= localList.size()) { if (l2 <= mh.b()) break; return false; } l2 += ((FileHeader)localList.get(k)).getUncompressedSize(); } localZipFile.extractAll(paramString2); mh.b(paramString1); System.out.println("\u89E3\u538B\u8017\u65F6\uFF1A" + (System.currentTimeMillis() - l1)); return true; } arrayOfFile[j].delete(); } } public static boolean a(String paramString1, String paramString2, String paramString3) { System.out.println("unzipUnfinishFile," + paramString1); while (true) { int i; try { String str1 = mh.c() + "/ispiano/package_cache/" + paramString1; ZipFile localZipFile = new ZipFile(str1); if (!localZipFile.isValidZipFile()) return false; localZipFile.setPassword("ISPiano Zhang"); List localList = localZipFile.getFileHeaders(); Algorithm localAlgorithm = new Algorithm(); i = 0; if (i < localList.size()) continue; eg localeg = new eg(); localeg.a(Long.parseLong(paramString3.substring(0, 8) + "00"), paramString2); localeg.g(); mh.b(str1); new File(mh.c() + "/ispiano/package_cache/" + "dir_" + paramString1).delete(); return true; FileHeader localFileHeader = (FileHeader)localList.get(i); String str2 = localFileHeader.getFileName(); long l = localFileHeader.getUncompressedSize(); String str3 = localAlgorithm.getFileName(paramString2 + paramString3 + str2); File localFile = new File(mh.c() + "/ispiano/video_cache/" + str3); mi.c("jing", str3 + "," + str2 + " " + localFile.length() + "," + l); if ((!localFile.exists()) || (localFile.length() != l)) { mh.b(mh.c() + "/ispiano/video_cache/" + str3); if (mh.b() >= l) continue; Toast.makeText(ISApp.a(), 2131230828, 0).show(); return false; mh.a(mh.c() + "/ispiano/package_cache/" + "dir_" + paramString1); mh.a(mh.c() + "/ispiano/video_cache/"); localZipFile.extractFile(str2, mh.c() + "/ispiano/package_cache/" + "dir_" + paramString1); new File(mh.c() + "/ispiano/package_cache/" + "dir_" + paramString1 + "/" + str2).renameTo(new File(mh.c() + "/ispiano/video_cache/" + str3)); } } catch (ZipException localZipException) { localZipException.printStackTrace(); return false; } i++; } } public static boolean b(String paramString1, String paramString2) { try { ZipFile localZipFile = new ZipFile(paramString2); ZipParameters localZipParameters = new ZipParameters(); localZipParameters.setCompressionMethod(8); localZipParameters.setCompressionLevel(5); localZipFile.addFolder(paramString1, localZipParameters); return true; } catch (ZipException localZipException) { localZipException.printStackTrace(); } return false; } public static boolean c(String paramString1, String paramString2) { try { new ZipFile(paramString1).extractAll(paramString2); return true; } catch (ZipException localZipException) { localZipException.printStackTrace(); } return false; } } ```

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

捷联惯导仿真matlab

捷联惯导的仿真(包括轨迹仿真,惯性器件模拟输出,捷联解算),标了详细的注释捷联惯导的仿真(包括轨迹仿真,惯性器件模拟输出,捷联解算),标了详细的注释

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

玩转Linux:常用命令实例指南

人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 --------------------------------------------------------------- 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+700元编程礼包。 &nbsp;

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

C++语言基础视频教程

C++语言基础视频培训课程:本课与主讲者在大学开出的程序设计课程直接对接,准确把握知识点,注重教学视频与实践体系的结合,帮助初学者有效学习。本教程详细介绍C++语言中的封装、数据隐藏、继承、多态的实现等入门知识;主要包括类的声明、对象定义、构造函数和析构函数、运算符重载、继承和派生、多态性实现等。 课程需要有C语言程序设计的基础(可以利用本人开出的《C语言与程序设计》系列课学习)。学习者能够通过实践的方式,学会利用C++语言解决问题,具备进一步学习利用C++开发应用程序的基础。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

2020-五一数学建模大赛C类问题饲料加工配比及优化.pdf

2020年,“51”数学建模C类问题,关于饲料配比问题以及加工优化方案。论文采用统计分析,建立了关于饲料加工的多目标优化模型。并利用蒙特卡罗算法对目标函数进行优化,解决了饲料加工质量最优配比问题并进行

MySQL数据库从入门到实战应用

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:&nbsp; 一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。 &nbsp;

navicat简体中文版 绿色版 (64位)

解压后安装navicat,打开navicat执行PatchNavicat即破解成功。可以正常使用啦。

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Qt5.10 GUI完全参考手册(强烈推荐)

本书是Qt中文版的参考手册,内容详尽易懂,详细介绍了Qt实现的各种内部原理,是一本不可多得的参考文献

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

进程监控软件 Performance Monitor中文版

告诉你每个程序现在在做什么,还可以根据你的要求过滤无关的内容。

八数码的深度优先算法c++实现

人工智能的八数码的深度优先算法c++实现

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

2020_五一数学建模_C题_整理后的数据.zip

该数据是我的程序读取的数据,仅供参考,问题的解决方案:https://blog.csdn.net/qq_41228463/article/details/105993051

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

相关热词 aero c# c#压缩图片 c# udp服务器 100线程 c# c# fidller请求 c# 参数 调用exe c# 打字母小游戏 c#显示未能加载文件 c# 右击菜单加快捷键 c#将重复的数据保留一条
立即提问