Tag: file io

Java中File.exists()的替代方案

我从未想过它会发生在我身上,但我遇到了我在Java中的第一个错误: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5003595 我几乎和bug中描述的情况一样(在Linux上的NFS),我发现File.exists()没有返回正确的值(至少不是马上)。 所以我的问题是,有没有替代这种检查文件是否存在的方法? 如果可能的话,我宁愿保持操作系统不可知。 编辑:我找到了一个解决方法。 如果你调用’ls $ filedir’,NFS会刷新任何给Java带来麻烦的缓存/元数据,而File.exists()会返回正确的值。 当然,这并不完全理想,因为它会损害可移植性,但有办法解决这个问题。 谢谢,-Ben

从Java中的多个线程写入FileOutputStream

从Java FileOutputStream对象调用多个线程的write是否安全? 输出是否会正确序列化? 澄清: 在我的例子中,类记录器包含一个FileOutputStream引用,多个线程可以调用logger write,它格式化输出并调用FileOutputStream写入。 我是否应该同步我的记录器写入方法以保证来自多个线程的消息不会混合?

使用Java修改文件的内容

我想用java程序删除一些文件内容,如下所示。 这是要在同一文件中替换的write方法,还是应该将其复制到另一个文件中。 但它删除了文件的所有内容。 class FileReplace { ArrayList lines = new ArrayList(); String line = null; public void doIt() { try { File f1 = new File(“d:/new folder/t1.htm”); FileReader fr = new FileReader(f1); BufferedReader br = new BufferedReader(fr); while (line = br.readLine() != null) { if (line.contains(“java”)) line = line.replace(“java”, ” “); lines.add(line); } FileWriter fw […]

基础知识 – 使用Java读/写远程文件

我开始要求从远程Ubuntu机器上的目录中读取和写入文件。 首先,我编写了一个Java程序,可以从远程Windows机器(即LAN)上的共享文件夹中读取,写入文件。 在这里,这样的东西适用于我的(本地)Windows机器: File inputFile = new File( “\\172.17.89.76\EBook PDF”);/*ignore the syntax errors, the loc is just for the idea*/ 现在,当我考虑使用远程Ubuntu机器时,显然我不能做这样的事情,因为机器不在局域网上( 我不确定即使它在LAN上也能做到 !)。 因此,我尝试了以下方法: 使用Jsch,在两台机器之间建立信任(本地 – 远程Linux,远程Linux – 远程Linux)和使用sftp写入文件。(完成) 在两台机器上运行套接字 – 一个发送器,一个接收器(两个Java)(完成) 试图实现I / O相似的Windows(LAN)机器的代码片段(未实现) 在做所有这些的同时,我有很多疑问,阅读过很多post等等,我觉得我在基础知识上缺少一些东西: 实现IO需要某种信任构建(在两台机器之间)实用程序。 但最后,我想编写一个类似于代码片段的代码,无论机器,网络等。 Jsch解决方案和其他建议(在URL上使用http,ftp等)最终使用在远程计算机上运行的一些服务。 换句话说,并不是Java IO被用于访问远程文件系统 – 这对我没有吸引力,因为我依赖于服务而不是使用旧的I / O. Samba,SSHFS太突然出现在场景中,只会增加我的困惑。 但我不认为它们是我的目标的解决方案! 重申一下 , 我想使用Java I / O(普通或nio,两者都很好)编写代码,它只能读取,编写远程文件而不使用ftp,http等协议或套接字发送器 – 接收器模型的服务 […]

缓冲的RandomAccessFile java

RandomAccessFile对于随机访问文件非常慢。 您经常阅读有关在其上实现缓冲层的信息,但无法在线查找执行此操作的代码。 所以我的问题是:你们谁知道这个类的任何开源实现共享指针或共享你自己的实现? 如果这个问题会成为关于这个问题的有用链接和代码的集合,我很确定,很多人都会共享这个问题并且SUN从来没有正确解决这个问题。 请不要引用MemoryMapping,因为文件可能比Integer.MAX_VALUE大。

Java读取文件的方法不同

似乎有很多很多方法可以在Java中读取文本文件( BufferedReader , DataInputStream等)。我个人最喜欢的是在构造函数中使用File Scanner (它更简单,更好地处理mathy数据处理,并且具有熟悉的语法) 。 Boris the Spider还提到了Channel和RandomAccessFile 。 有人可以解释这些方法的优点和缺点吗? 具体来说,我什么时候想要使用? (编辑)我想我应该是具体的,并补充说我非常喜欢Scanner方法。 所以真正的问题是,什么时候不想使用它?

写入文件而不删除旧数据

可能重复: java追加到文件 如何将数据附加到文件? 我想在java中编写一个文件而不清除(删除)该文件中的旧数据! 我运行此代码,看到每次运行后都清理.txt文件中的所有旧数据! 我的代码在这里: import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class WriteToFileExample { public static void main(String[] args) { try { String content = “This is the content to write into file”; File file = new File(“/users/mkyong/filename.txt”); // if file doesnt exists, then create it if (!file.exists()) { file.createNewFile(); } […]

Java PrintWriter无法正常工作

我只是想把我的二维数组“拼图”写成一个文件。 我有一个双循环,它读取我的数组中的每个’char’值,并据说将它们写入文件。 我似乎无法在我的代码中找到错误。 该文件说它在我运行程序时被修改,但它仍然是空白的。 多谢你们! public void writeToFile(String fileName) { try{ PrintWriter pW = new PrintWriter(new File(fileName)); for(int x = 0; x < 25; x++) { for(int y = 0; y < 25; y++) { pW.write(puzzle[x][y]); } pW.println(); } } catch(IOException e) { System.err.println("error is: "+e.getMessage()); } }

java替换textfile中的特定字符串

我有一个名为log.txt的文本文件它有以下数据 1,,Mon May 05 00:05:45 WST 2014,textFiles/a.txt,images/download.jpg 2,,Mon May 05 00:05:45 WST 2014,textFiles/a.txt,images/download.jpg 第一个逗号之前的数字是指定每个项目的索引。 我想要做的是读取文件然后用另一个值替换给定行中的字符串的一部分(例如textFiles / a.txt)(例如/ something / bob.txt)。 这就是我到目前为止所拥有的 File log= new File(“log.txt”); String search = “1,,Mon May 05 00:05:45 WST 2014,textFiles/a.txt,images/download.jpg; //file reading FileReader fr = new FileReader(log); String s; try (BufferedReader br = new BufferedReader(fr)) { while ((s = br.readLine()) != […]

在Java中将行添加到文件中

有没有办法在Java中为行添加一行,而不创建临时文件,并将所需内容写入其中?