0

我正在尝试按照以下示例在此处找到它Java:查找文件的最后一行是否为空 以确定文件是否由 CRLF(空行)完成但是当我将字符串传递给方法 RandomAccessFile 时说文件未找到。问题是我无法将文件路径提供给它,但我将文件的内容作为字符串,所以我尝试使用 File f = new File(myString); 创建一个文件 然后将创建的文件传递给该方法,但它没有工作,它给了我同样的错误(找不到文件)(它认为文件的第一行是路径)!

如何从我的字符串中创建一个由 RandomAccessFile 接受的文件,该文件包含我要检查它是否由 CRLF 完成的文件的内容。

希望我很清楚。

public static boolean lastLineisCRLF(String filename) {
    RandomAccessFile raf = null;
    try {
        raf = new RandomAccessFile(filename, "r");
        long pos = raf.length() - 2;
        if (pos < 0) return false; // too short
        raf.seek(pos);
        return raf.read() == '\r' && raf.read() == '\n';
    } catch (IOException e) {
        return false;
    } finally {
        if (raf != null) try {
            raf.close();
        } catch (IOException ignored) {
        }
    }
}
4

1 回答 1

0

如果您已将文件内容作为字符串保存在内存中,则无需再次将其写入文件以确定最后一行是否为空。只需用行尾字符拆分内容,然后从最后一行修剪空格,看看是否还有任何内容:

  String fileContent = "line1\nline2\nline3\nline4\n";
  // -1 limit tells split to keep empty fields
  String[] fileLines = fileContent.split("\n", -1);
  String lastLine = fileLines[fileLines.length - 1];
  boolean lastLineIsEmpty = false;
  if(lastLine.trim().isEmpty())
  {
     lastLineIsEmpty = true;
  }

  //prints true, line4 followed by carriage return but 
  //no line 5
  System.out.println("lastLineEmpty: " + lastLineIsEmpty);
于 2013-07-09T16:58:52.853 回答