检查Android中的文件是否为空

Mic*_*ski 4 java android file

这是我的代码示例.代码很长,只是为了测试文件是否为空,然后如果不是,则写入它.无论哪种方式,该行都if (!(data.equals("")) && !(data.equals(null)))不起作用,即使文件为空,它仍然会通过警报.

FileInputStream fIn = null;String data = null;InputStreamReader isr = null;
try{
    char[] inputBuffer = new char[1024];
    fIn = openFileInput("test.txt");
    isr = new InputStreamReader(fIn);
    isr.read(inputBuffer);
    data = new String(inputBuffer);
    isr.close();
    fIn.close();
}catch(IOException e){}

// this is the check for if the data inputted from the file is NOT blank
if (!(data.equals("")) && !(data.equals(null)))
{
    AlertDialog.Builder builder = new AlertDialog.Builder(Main.this);
    builder.setMessage("Clear your file?" + '\n' + "This cannot be undone.")
    .setCancelable(false)
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            EditText we = (EditText)findViewById(R.id.txtWrite);
            FileOutputStream fOut = null;

            OutputStreamWriter osw = null;
            try{
                fOut = openFileOutput("test.txt", Context.MODE_PRIVATE);
                osw = new OutputStreamWriter(fOut);
                osw.write("");
                osw.close();
                fOut.close();
                we.setText("");
            }catch(Exception e){}
        }
    })
    .setNegativeButton("No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}
Run Code Online (Sandbox Code Playgroud)

此外,如果有人有办法缩短这段代码,我会很高兴!

Jon*_*oni 11

如果文件为空(没有内容),则其长度为0.如果文件不存在,则返回0; 如果这是必要的区别,您可以检查文件是否与exists方法一起存在.

File f = getFileStreamPath("test.txt");
if (f.length() == 0) {
    // empty or doesn't exist
} else {
    // exists and is not empty
}
Run Code Online (Sandbox Code Playgroud)

当前的方法无法工作,因为inputBuffer是一个包含1024个字符的数组,并且从中创建的字符串也将具有1024个字符,与从文件中成功读取的字符数无关.