当前位置: 代码迷 >> Android >> 已经折腾两天了,为什么小弟我无法向手机里写文件?
  详细解决方案

已经折腾两天了,为什么小弟我无法向手机里写文件?

热度:19   发布时间:2016-04-28 01:19:13.0
已经折腾两天了,为什么我无法向手机里写文件??
我按照JAVA的方法、按照网上查询的方法、按照书上的方法,写了三个版本了!!但都不行!!已经折腾两天了!!请问到底是怎么回事呢??!!谢谢了!!

(我没有SD卡,我是直接写在手机里的。我已经用Environment.getDataDirectory().toString();找到了路径,可即便往那个路径里写也不行。)

package com.example.fcafileio;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Scanner;

import org.apache.http.util.EncodingUtils;

import android.os.Bundle;
import android.os.Environment;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;

public class FCAFILEIO extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fcafileio);
String PATH = Environment.getDataDirectory().toString();
writefile3("fcafca.bin", "sadfasdfasd");
// final TextView txtfca = (TextView) findViewById(R.id.fcatext);
}

private void writefile1(File filefca, String content) {
try {
PrintWriter outputfca = new PrintWriter(filefca);
outputfca.print(content);
outputfca.flush();
outputfca.close();
} catch (Exception e) {
e.printStackTrace();
}
}

private void writefile2(File filefca, String content) {
try {
FileOutputStream outputfca = new FileOutputStream(filefca);
byte[] bytes = content.getBytes();
outputfca.write(bytes);
outputfca.flush();
outputfca.close();
} catch (Exception e) {
e.printStackTrace();
}
}

private void writefile3(String fileName, String message) {
try {
FileOutputStream fos = openFileOutput(fileName, MODE_APPEND);
PrintStream ps = new PrintStream(fos);
ps.println(message);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

------解决思路----------------------
权限加了吗?
     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

如果不是缓存文件,使用 
this.getFilesDir();

如果是缓存文件,使用
this.getCacheDir();

上面两个接口,
第一个得到的目录是 /data/data/你的<package_name>/files/
第二个得到的目录是 /data/data/你的<package_name>/cache
在android机身存储中 /data/data/你的<package_name>/ 这个目录对app而言是可写的。这个目录下面系统会建立几个目录放置db,sharepreference等文件,我们遵守android的规范,app运行需要的文件就放到files目录下 ,缓存文件放到cache中就可以了。

是的,得到了该路径了,但就算往那里面写也不行。手机的文件浏览器根本搜不到。

手机的文件浏览器 一般是只能看到外部存储区的文件,除非你有root过了,否则是看不到/data下面的文件的。

我用你的writefile3 这个函数是过了,是可以写成功的,你自己看看是不是哪里还有问题,另外因为你写的不是外部存储,所以
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

这两个权限不需要加应该也能写成功
  相关解决方案