Tag: 文件

我是否需要关闭我执行File.getName()的文件?

我将在目录中拥有大量文件。 我将使用File.getName()获取文件名,并将它们记录到日志文件中。 我认为,我不需要关闭文件,因为我没有在其中进行任何读/写操作。 它是否正确?

是否有必要关闭FileWriter,前提是它是通过BufferedWriter编写的?

考虑一下BufferedReader,如下所示: writer = new BufferedWriter(new FileWriter(new File(“File.txt”), true)); 在这种情况下,在应用程序结束时,我正在使用writer.close()关闭writer.close() 这还够吗? 用new FileWriter(new File(“File.txt”), true) FileWriter创建的new FileWriter(new File(“File.txt”), true)是否需要关闭?

在创建文件内的文件之前检查目录中的写访问权限

我的小实用程序应用程序通过GUI文件选择器询问用户输出目录。 然后在经过一些处理后,它会在此输出目录中创建大量文件。 我需要检查应用程序是否具有写访问权限,以便通知用户并且不继续处理(这可能需要很长时间) 我的第一次尝试是java.io.File的canWrite()方法。 但这不起作用,因为它处理目录条目本身而不是其内容。 我已经看到至少一个Windows XP文件夹的实例可以重命名或删除但是不能在其中创建文件(因为权限)。 这实际上是我的测试用例。 我终于解决了以下解决方案 //User places the input file in a directory and selects it from the GUI //All output files will be created in the directory that contains the input file File fileBrowse = chooser.getSelectedFile(); //chooser is a JFileChooser File sample = new File(fileBrowse.getParent(),”empty.txt”); try { /* * Create […]

exception读取非常大的文件> 300 MB

我的任务是在READ&WRITE模式下打开一个大文件 ,我需要通过搜索起点和终点来搜索该文件中的部分文本。 然后我需要将搜索到的文本区域写入新文件并从原始文件中删除该部分。 上面的过程我会做更多次。 所以我认为对于这些过程,通过CharBuffer将文件加载到内存中会很容易,并且可以通过MATCHER类轻松搜索。 但是我在读取时得到HeapSpaceexception ,即使我通过执行如下java -Xms128m -Xmx900m readLargeFile增加到900MB我的代码是 FileChannel fc = new FileInputStream(fFile).getChannel(); CharBuffer chrBuff = Charset.forName(“8859_1”).newDecoder().decode(fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size())); 对于上面的代码,每个人都建议我将所有内容加载到内存中是一个坏主意,如果文件大小为300 MB则意味着,由于charSet,它将是600MB。 所以上面是我的任务,然后现在建议我一些有效的方法。 请注意, 我的文件大小会更多 ,只使用JAVA我会做这些事情。 提前致谢…

如何在Java servlet中同步文件访问?

我为一个简单的目的创建了一个小型Java servlet:一旦调用它,它将执行以下步骤: 从本地文件系统读取文件foo.json 处理文件中的数据并对其进行一些更改 将更改写回文件 简化版代码: @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { FileInputStream inputStream = new FileInputStream(“foo.json”); String filecontent = IOUtils.toString(inputStream); inputStream.close(); JSONObject json = new JSONObject(filecontent); doSomeChangesTo(json); FileWriter writer = new FileWriter(“foo.json”); writer.write(json.toJSONString()); writer.flush(); writer.close(); } 现在我面临的问题是,可能会发生几乎同时通过两个或多个对servlet的http请求调用servlet。 为了避免对同一文件进行多次并行写访问,我需要以某种方式同步它。 根据我对servlet生命周期过程的理解,每个请求都会生成一个新线程,因此使用FileLock可能没有任何影响: 文件锁代表整个Java虚拟机。 它们不适合控制同一虚拟机中多个线程对文件的访问。 (来自http://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileLock.html ) 我想使用synchronized(){}关键字也不起作用,因为我想同步文件系统访问而不是访问变量/对象。 那么,当该servlet上发生多个并行请求时,如何在我的servlet中同步文件系统访问?

使用Java在其中创建新目录和文件

我正在尝试在此目录中创建一个新目录和一个文件。 谁能告诉我哪里出错了? 我正在使用Windows系统,我希望该目录存在于我的.java文件所在的文件夹中。 import java.io.*; class PS_Task1 { public static void main(String[] args) { try { File file = new File(“Library\\test.txt”); file.mkdir(); file.createNewFile(); } catch(Exception e) { System.out.println(“ecception”); } } }

如何创建自己的文件扩展名,如.odt或.doc?

我正在处理像microsoft word(学术项目)这样的文档处理项目。 有没有快速的方法来创建我自己的扩展。 有没有第三方图书馆?

如何在java中列出200万个文件目录而没有“内存不足”exception

我必须处理一个大约200万xml的目录进行处理。 我已经解决了使用队列在机器和线程之间分配工作的处理,一切正常。 但现在最大的问题是用200万个文件读取目录的瓶颈,以便逐步填充队列。 我尝试过使用File.listFiles()方法,但它给了我一个java out of memory: heap spaceexception。 有任何想法吗?

如何判断文件何时“完成”复制到监视目录?

我正在使用WatchService API来监视目录,并在用户开始将文件复制到目录中时获取ENTRY_CREATE事件。 我正在使用的文件可能很大,我想知道副本何时完成。 是否有任何内置的java API可用于实现此目的,或者我最好只是跟踪创建的文件的大小并在大小停止增长时开始处理? 编辑:这是我的示例代码: package com.example; import java.io.File; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.StandardWatchEventKinds; import java.nio.file.WatchEvent; import java.nio.file.WatchKey; import java.nio.file.WatchService; public class Monitor { public static void main(String[] args) { try { String path = args[0]; System.out.println(String.format( “Monitoring %s”, path )); WatchService watcher = FileSystems.getDefault().newWatchService(); Path watchPath = FileSystems.getDefault().getPath(path); watchPath.register(watcher, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_MODIFY); while […]

是否有默认方法来读取播放中的文件,即使在生产环境中也能正常工作?

我正在使用java框架来开发Web应用程序。 我想在运行时读取文件,该文件已包含在项目的文件夹中。 但是在生产环境中,该文件夹不可用。 有没有办法在运行时使文件夹可用? 特别是,是否有一种默认方法来处理这种情况? 我经历了一个问题“如何在Play Framework 2.2.1中读取文件? 1 ”但是没有提到生产环境中的问题。