2

我厌倦了胡闹。我开始相信这实际上是不可能的。我在哪里可以找到显示如何编写文件“myPath/myFile.txt”的简单示例?然后再读一遍?

这是我无法工作的代码块示例:

if(pathExists(path, ctx))  
{  
File file = new File(ctx.getFilesDir().getAbsolutePath() +"/" + path, fileName);  
FileInputStream fIn = new FileInputStream(file);  

InputStreamReader isr = new InputStreamReader(fIn);  

StringWriter writer = new StringWriter();  
IOUtils.copy(fIn, writer, "UTF-8");  
fileStr = writer.toString();  
}

这是我得到的错误:
“java.io.IOException:是一个目录”

4

4 回答 4

3

以下代码段会将您保存在应用程序空间中的文件复制到您想要的路径。

File mfile=new File("/data/data/src.com.file.example/files");
File[] list=mfile.listFiles();
    // The path where you like to save your files
String extStorageDirectory = "/mnt/sdcard/backup/";


    File file23 = null;
    File fr = null;
    for(int i =0;i<list.length;i++){
File myNewFolder = new File(extStorageDirectory +list[i].getName().substring(0,5));

if(myNewFolder.exists()){

   String selectedFilePathq = "data/data/src.com.file.example/file/"+list[i].getName();
file23 = new File(selectedFilePathq);
fr = new File(myNewFolder+"/"+list[i].getName());
}else{
  myNewFolder.mkdir();
String selectedFilePathq = "data/data/src.com.file.example/files  /"+list[i].getName();
file23 = new File(selectedFilePathq);
fr = new File(myNewFolder+"/"+list[i].getName());
}



try {
 copy(file23,fr);
} catch (IOException e) {
    e.printStackTrace();
}
}








public void copy(File src, File dst) throws IOException {
    InputStream in = new FileInputStream(src);
    OutputStream out = new FileOutputStream(dst);

    // Transfer bytes from in to out
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    out.close();
}
于 2012-02-15T05:22:52.687 回答
0
String strfile1 = getApplicationContext().getFilesDir().getAbsolutePath() + "/serstatus.txt" ;

File f1 = new File(strfile1);
于 2012-02-14T07:07:35.157 回答
0

您必须像在 java 中那样使用序列化方法。要将文本保存为文件,您应该使用 FileOutputStream 并读取您应该使用 FileInputStream 的文件。您可以检查以下代码,它有一个简单的编辑文本和两个按钮,一个用于保存,一个用于读取保存在该文件中的数据。

以下代码是将文本保存在名为 raksi 的文件中。

Button savebutton = (Button)findViewById(R.id.but);
savebutton.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        e= (EditText)findViewById(R.id.edit);
        StringBuffer sb = new StringBuffer();
        sb.append(e.getText().toString());
        String s = sb.toString();
        try { 
            final String TESTSTRING = new String(s);
            FileOutputStream fOut = openFileOutput("raksi.txt",MODE_WORLD_READABLE);
            OutputStreamWriter osw = new OutputStreamWriter(fOut);
            osw.write(TESTSTRING);
            ll = TESTSTRING.length();
            osw.flush();
            osw.close();
        }catch (Exception e) {
        // TODO: handle exception
        }
    }
});

以下代码是按钮获取的点击监听器。它从文件中读取数据并显示为 toast,

Button b1 = (Button)findViewById(R.id.but1);
b1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    try{
        FileInputStream fIn = openFileInput("name.txt");
        InputStreamReader isr = new InputStreamReader(fIn);
        char[] inputBuffer = new char[ll];
        isr.read(inputBuffer);
        String readString = new String(inputBuffer);
        Toast.makeText(getApplicationContext(), readString, Toast.LENGTH_LONG).show();
    }
    catch(IOException e){
    // TODO: handle exception
    }
于 2012-02-14T10:36:37.460 回答
0

除了由 android 系统分配给您自己的应用程序的私有文件空间之外,您无法写入 Android 内部存储(除非您的设备已植根)。

于 2012-02-14T06:38:22.183 回答