Tag: io

如何检查文件locking?

有没有办法检查一个文件是否被locking,而不使用try / catch块? 现在,我知道的唯一方法就是打开文件并捕获任何System.IO.IOException 。

为什么“啜食”一个文件不是一个好习惯?

为什么“啜食”一个文件对于正常的文本文件I / O不是一个好的做法,什么时候有用? 例如,为什么我不应该使用这些? File.read('/path/to/text.txt').lines.each do |line| # do something with a line end 要么 File.readlines('/path/to/text.txt').each do |line| # do something with a line end

在C ++中将整个文件读入std :: string的最好方法是什么?

如何将文件读入std::string ,即一次读取整个文件? 文本或二进制模式应由调用者指定。 解决scheme应符合标准,便携和高效。 它不应该不必要地复制string的数据,而应该避免在读取string时重新分配内存。 一种方法是统计文件大小,将std::string和fread()到std::string的const_cast<char*>() 'ed data() 。 这要求std::string的数据是连续的,这是标准所不需要的,但对于所有已知的实现来说似乎都是这样。 更糟糕的是,如果在文本模式下读取文件, std::string的大小可能不等于文件的大小。 一个完全正确的,符合标准的可移植解决scheme可以使用std::ifstream的rdbuf()构造成一个std::ostringstream并从那里转换成一个std::string 。 但是,这可能会复制string数据和/或不必要地重新分配内存。 所有相关的标准库实现是否足够聪明以避免所有不必要的开销? 还有另一种方法吗? 我错过了一些隐藏的Boost函数,它已经提供了所需的function吗? 请给出你的build议如何实现它。 void slurp(std::string& data, bool is_binary) 考虑到上面的讨论。

用Python获取文件的最后n行,类似于尾部

我正在为Web应用程序编写一个日志文件查看器,为此我想通过日志文件的行分页。 文件中的项目是基于底部最新项目的行。 所以我需要一个tail()方法,可以从底部读取n行,并支持偏移量。 我想到的是这样的: def tail(f, n, offset=0): """Reads an lines from f with an offset of offset lines.""" avg_line_length = 74 to_read = n + offset while 1: try: f.seek(-(avg_line_length * to_read), 2) except IOError: # woops. apparently file is smaller than what we want # to step back, go to the beginning instead […]

简单的方法将Java InputStream的内容写入OutputStream

今天我惊讶地发现,我无法find任何简单的方法来将InputStream的内容写入到Java中的OutputStream中。 显然,字节缓冲区的代码不难写,但是我怀疑我只是错过了一些能让我的生活更轻松(而且代码更清晰)的东西。 所以,给一个InputStream和一个OutputStream ,有没有更简单的方法来编写以下内容? byte[] buffer = new byte[1024]; int len = in.read(buffer); while (len != -1) { out.write(buffer, 0, len); len = in.read(buffer); }

扫描仪与BufferedReader

据我所知,从Java文件中读取基于字符的数据的两种最常见的方法是使用Scanner或BufferedReader 。 我也知道BufferedReader通过使用缓冲区来有效地读取文件,以避免物理磁盘操作。 我的问题是: Scanner性能和BufferedReader吗? 为什么要select通过BufferedReader Scanner ,反之亦然?

如何检查Java中是否存在文件?

在打开Java阅读器之前,如何检查文件是否存在? (相当于Perl的-e $filename )。 SO上唯一类似的问题处理写入文件,因此使用FileWriter来回答,这在这里显然不适用。 如果可能的话,我宁愿一个真正的API调用返回true / false,而不是一些“调用API来打开一个文件,并赶上时,它会抛出一个exception,你检查文本中没有文件”,但我可以住在后者。

为什么我不能在打开的文件上调用read()两次?

对于我正在做的练习,我试图用read()方法read()给定文件的内容两次。 奇怪的是,当我第二次调用它,它似乎并没有返回文件内容作为一个string? 这是代码 f = f.open() # get the year match = re.search(r'Popularity in (\d+)', f.read()) if match: print match.group(1) # get all the names matches = re.findall(r'<td>(\d+)</td><td>(\w+)</td><td>(\w+)</td>', f.read()) if matches: # matches is always None 当然,我知道这不是最有效或最好的方式,这不是重点。 关键是,为什么我不能调用read()两次? 我必须重置文件句柄吗? 或closures/重新打开文件,以此来做到这一点?

如何检查文件是否存在于jQuery或纯JavaScript中?

如何检查我的服务器上的文件是否存在于jQuery或纯JavaScript中?

我怎样才能locking一个文件使用Java(如果可能)

我有一个使用FileReader打开文件的Java进程。 如何防止另一个(Java)进程打开这个文件,或者至less通知第二个进程该文件已经打开? 这是否会自动使第二个进程得到一个exception,如果文件是打开的(这解决了我的问题)还是必须明确地打开它在第一个进程中的某种标志或参数? 澄清: 我有一个Java应用程序列出了一个文件夹,并打开列表中的每个文件来处理它。 它处理每个文件之后。 每个文件的处理包括读取它并根据内容进行一些计算,大约需要2分钟。 我也有另一个Java应用程序,做相同的事情,而是写在文件上。 我想要的是能够同时运行这些应用程序,所以场景就像这样。 ReadApp列出文件夹并find文件A,B,C,打开文件A并开始读取。 WriteApp列出文件夹,并find文件A,B,C。它打开文件A,看到它是打开的(通过例外或任何方式)并进入文件B. ReadApp完成文件A并继续到B.它看到它是开放的,并继续到C.当ReadApp正在读取同一个文件时,WriteApp不写,反之亦然。 他们是不同的过程。