java随机访问文件参数

java随机访问文件参数,java,randomaccessfile,Java,Randomaccessfile,我试图按照下面的示例在这里找到它,以确定文件是否通过CRLF(空行)完成,但是当我将字符串传递给方法RandomAccessFile时,它表示文件未找到。问题是我无法将文件路径提供给它,但我将文件的内容作为字符串,因此我尝试使用file f=new file(myString)创建一个文件;然后将创建的文件传递给该方法,但它不起作用,并且它给了我相同的错误(未找到文件)(它将文件的第一行视为路径) 如何从包含我要检查文件内容的字符串创建一个被RandomAccessFile接受的文件,该文件是否

我试图按照下面的示例在这里找到它,以确定文件是否通过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) {
        }
    }
}
public静态布尔lastLineisCRLF(字符串文件名){
RandomAccessFile raf=null;
试一试{
raf=新的随机访问文件(文件名,“r”);
long pos=raf.length()-2;
if(pos<0)返回false;//太短
英国皇家空军搜索(pos);
返回raf.read();
}捕获(IOE异常){
返回false;
}最后{
如果(raf!=null),请尝试{
raf.close();
}捕获(忽略IOException){
}
}
}

如果文件内容已作为字符串存储在内存中,则无需再次将其写入文件以确定最后一行是否为空。只需将内容拆分为一个行尾字符,然后将最后一行的空白部分修剪掉,看看是否还有剩余内容:

  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);

文件是否存在?用户通过jsp选择文件。我将文件名和内容存储在字符串中。这意味着我有所选的文件名和内容。当它说找不到文件时,实际上是指找不到文件。可能你把文件路径传错了好主意!我试过了,我有两个错误方法fileLines(int)未定义;类型的方法isEmpty()未定义String@LaetitiaZgraja我的代码有问题,但我想现在已经修好了。检查最近的编辑。P.S文件的最后一部分没有空格。该文件由CRLF完成。此外,在Java 1.6中,isEmpty()被添加到字符串中。如果未使用1.6,则可以将isEmpty()替换为
lastLine.trim().length()==0
如果(lastLine.trim().isEmpty())给出错误,则类型字符串的方法isEmpty()未定义