创建空的txt文件夹而不是txt文件

时间:2019-09-16 10:19:26

标签: android file

当我尝试使用USB数据创建txt文件时,会创建一个空的txt文件夹。

另一个实现类似的应用有时可以工作,有时无法工作。

下面附上的代码只是我编码的一部分。

我可以知道是什么问题吗?我已经介绍了几个网站和论坛,介绍如何写入文件。我认为我使用的方法是最通用的方法。但是以某种方式不起作用(或更精确地说。它可以工作一到两次,然后不再创建任何文件)。

private String filename = ".txt";
File myExternalFile;

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
    setContentView(R.layout.activity_main);

    if(isExternalStorageAvailable() || !isExternalStorageReadOnly()){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
        String currentDateandTime = sdf.format(new Date());
        filename = "gas_sensor_"+currentDateandTime + filename;
        myExternalFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), filename);
        if (!myExternalFile.mkdirs()) {
            Log.e(logTag, "Directory not created");
        }else{
            Log.e(logTag, "Directory created");
        }
    }
}

private void tvAppend(TextView tv, CharSequence text) {
    final TextView ftv = tv;
    final CharSequence ftext = text;

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            ftv.append(ftext);
            ftv.setMovementMethod(new ScrollingMovementMethod());
        }
    });

    try{
        FileOutputStream fos = new FileOutputStream(myExternalFile,true);
        fos.write(ftext.toString().getBytes());
        fos.close();
    }catch (IOException e){
        e.printStackTrace();
    }
}

private static boolean isExternalStorageReadOnly() {
    String extStorageState = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) {
        return true;
    }
    return false;
}

private static boolean isExternalStorageAvailable() {
    String extStorageState = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(extStorageState)) {
        return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:1)

尝试此代码。您传递直接文件夹名称而不是文件

try{
        File file = new File(myExternalFile, "your_file_name.txt")
        FileOutputStream fos = new FileOutputStream(file,true);
        fos.write(ftext.toString().getBytes());
        fos.close();
    }catch (IOException e){
        e.printStackTrace();
    }