Tag: file io

使用Java中的Zip和GZip文件

自从我完成Java I / O以来已经有一段时间了,我不知道使用Zip和GZip文件的最新“正确”方法。 我不一定需要一个完整的工作演示 – 我主要是寻找合适的接口和方法。 是的,我可以查看任何关于此的随机教程,但性能是一个问题(这些文件可能变得非常大),我确实关心使用最好的工具。 我将要实施的基本流程: 将一堆文件(可能是压缩,gzip或两者)下载到临时文件夹。 将所有解压缩的文件添加到临时文件夹中的新zip文件中。 输入文件可能会被压缩和存档多次。 例如,“完全提取”应该采取以下任何输入(我无法控制这些输入),并留下foo.txt : foo.txt.gz foo.txt.zip foo.txt.gz.zip foo.txt.zip.gz … foo.txt.gz.gz.gz.zip.gz.zip.zip.gz.gz … 然后,我可能会留下foo.txt , bar.mp3 , baz.exe – 所以我只是将它们全部添加到一个带有一些通用名称的新zip文件中。 问题: 文件大小是一个潜在的问题,我应该快速使用哪些(接口/类/方法): 提取zip文件? 提取gzip文件? 写zip文件? 在写回磁盘之前,我最好将各个提取的文件保存在内存中吗? 要么, 潜在的大文件是不是一个坏主意?

在Java(TM)Platform SE二进制文件中打开

我试图删除一个文件,我有两个,一个稍微改变,所以我可以删除旧文件,并用我更改的新文件替换它。 当我尝试删除文件时,我收到错误消息“正在使用的文件”,其中表示无法完成操作,因为该文件是在Java(TM)Platform SE二进制文件中打开的。 我该如何关闭它?

从jar或类路径的任何地方读取文件?

我正在尝试构建一个将资源文件构建到jar中的应用程序,但我希望项目可以在eclipse中运行。 我的项目有一个基本的maven 2结构,我不确定如何读取文件,以便在从JAR运行或从eclipse运行时找到并使用它。 思想? 结构体: src/main/java src/main/resources/file.txt 目前的阅读方法: getClass().getResourceAsStream(“/file.txt”) 是否有读取方法将获取src / main / resources / *,以及JAR的根级别(部署资源的位置)?

在Java中复制数据的更快方法?

我被赋予了从服务器复制数据的任务。 我正在使用BufferedInputStream和输出流来复制数据,我正在逐字节地进行。 即使它正在运行但复制数据需要花费很长时间,因为其中一些数据是100的MB,所以肯定它不会起作用。 任何人都可以建议我Byte副本的Byte副本,以便我的代码可以复制几百MB的文件。 缓冲区是2048。 这是我的代码的样子: static void copyFiles(SmbFile[] files, String parent) throws IOException { SmbFileInputStream input = null; FileOutputStream output = null; BufferedInputStream buf_input = null; try { for (SmbFile f : files) { System.out.println(“Working on files :” + f.getName()); if (f.isDirectory()) { File folderToBeCreated = new File(parent+f.getName()); if (!folderToBeCreated.exists()) { folderToBeCreated.mkdir(); System.out.println(“Folder name […]

哪个更好 – 使用String或File作为参数类型,用于获取文件名的方法

我有几种方法将文件名作为参数。 我怀疑的是,什么是更好的方式来声明这些方法的参数。 该参数应该是String类型 void normalizeData(String inFile) 或者我应该将参数显式声明为File 。 void normalizeData(File inFile) 就个人而言,我发现File更直观,但想知道这些事情的最佳实践是什么。

在Java中尾部/轮询日志文件的最有效方法

有很多方法,可以使用创建程序并只调用Unix tail命令,但问题是该进程必须安装在安装了尾部的Unix机器上。 另一种选择是直接读取文件,直到没有更多行,睡眠一段时间然后尝试读取下一行并重复。 问题是我如何/如何轮询正在写入的文件。 AFAIK在Java中没有办法在文件被修改时获得异步通知,因为这个级别太低(来自操作系统的东西)。 我也知道没有lib支持这个。 我在想一个更好的方法可能是在文件的修改日期进行睡眠/轮询..? 有解决方案?

如何将.txt文件的最后5行读入java

我有一个文本文件,包含几个条目,如: hello there my name is JoeBloggs 我如何按降序读取最后五个条目,即来自JoeBloggs-那里 我目前只有代码才能阅读最后一行: public class TestLastLineRead { public static void main(String[] args) throws Exception { FileInputStream in = new FileInputStream(file.txt); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine = null, tmp; while ((tmp = br.readLine()) != null) { strLine = tmp; } String lastLine = strLine; System.out.println(lastLine); in.close(); } […]

如何从close()正确处理IOException

Java I / O类java.io.Reader , java.io.Writer , java.io.InputStream , java.io.OutpuStream及其各种子类都有一个close()方法,可以抛出IOException 。 对于处理此类例外的正确方法是否有任何共识? 我经常看到建议只是默默地忽略它们,但这感觉不对,至少在开放写入资源的情况下,关闭文件时出现问题可能意味着无法写入/发送未刷新的数据。 另一方面,在阅读资源时,我完全不清楚为什么close()可能抛出以及该怎么做。 那么有任何标准建议吗? 一个相关的问题是, close是否会抛出IOException? ,但更多的是关于哪些实现真正抛出,而不是如何处理exception。

从java中的二进制文件中读取序列化对象?

我有一个简单的问题。 如何在java中读取二进制文件的所有内容? 我写了一些代码,但它只检索第一个对象。 这是我的代码: ObjectInputStream in = new ObjectInputStream(new FileInputStream(“C:\\Users\\فاطمة\\Downloads\\student.bin”)); Binary b2 = (Binary)in.readObject(); System.out.println(“Student ID: ” + b2.id); System.out.println(“Student Name: ” + b2.name); System.out.println(“Student Grade: ” + b2.grade); in.close();

如何替换特定文本行中的特定单词

好的,所以我有这个yaml文件,我想替换一个字符串 socialspy: true 用字符串 socialspy: false 但我不知道该怎么做。 这是完整的yaml文档 timestamps: login: 1395784099618 lastteleport: 1395785353975 logout: 1395777644566 mute: 0 ipAddress: 127.0.0.1 lastlocation: world: world x: -276.7695097103249 y: 67.31022115326866 z: -354.327229975015 yaw: 127.892334 pitch: 20.817677 money: ‘155200.0’ logoutlocation: world: world x: -252.00777100946556 y: 76.56983022033046 z: -348.45387330548886 yaw: 319.99237 pitch: 19.562881 socialspy: true godmode: true afk: false powertools: muted: […]