Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串数组列表保存到内部文件目录_Java_Android_Internal Storage - Fatal编程技术网

Java 将字符串数组列表保存到内部文件目录

Java 将字符串数组列表保存到内部文件目录,java,android,internal-storage,Java,Android,Internal Storage,我目前正在开发一个android应用程序,在运行时生成一些用户数据,这些数据保存在两个ArrayList中。一旦应用程序关闭,我需要将数据保存到内存中,但在我的logcat中,我总是得到错误IOException file not found 我不明白为什么总是这样。以下是我的活动代码。请帮帮我 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutput

我目前正在开发一个android应用程序,在运行时生成一些用户数据,这些数据保存在两个
ArrayList
中。一旦应用程序关闭,我需要将数据保存到内存中,但在我的logcat中,我总是得到错误
IOException file not found

我不明白为什么总是这样。以下是我的活动代码。请帮帮我

    import java.io.BufferedReader;
    import java.io.DataInputStream;
     import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBarActivity;
    import android.text.Html;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.View;
    import android.widget.Button;


    public class MainActivity extends ActionBarActivity {


public static ArrayList<String> myArrayList=new ArrayList<String>();
public static ArrayList<String> myArrayListwr=new ArrayList<String>();
static int close=1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    close=1;

     System.out.println("Oncreate called");

    try{ 
     final File dir = new File(getApplicationContext().getFilesDir() + "/file");

        if(!(dir.exists()))
        {

             dir.mkdirs(); //create folders where write files

        }
         final File file = new File(dir+ "/lines.txt");


             if(!(file.exists())) {

                 file.createNewFile();

                } 

             BufferedReader br = new BufferedReader(new FileReader(file));     
                if (br.readLine() == null) {
                    close=0;
                }
                br.close();

    }
    catch (IOException exc) { exc.printStackTrace(); } 




     try {
         if(myArrayList.size()==0 && close!=0)
         {
             System.out.println("retriving data from file lines");


             FileInputStream input =openFileInput("lines.txt");  // Open input stream

         DataInputStream din = new DataInputStream(input);

         int sz = din.readInt(); // Read line count
         for (int i=0;i<sz;i++) { // Read lines
            String line = din.readUTF();
            myArrayList.add(line);
         }
         din.close();
         }
        }
        catch (IOException exc) { exc.printStackTrace(); } 

     try {
         if(myArrayListwr.size()==0 && close!=0)
         {
             System.out.println("retriving data from file lineswr");
             final File dirwr = new File(getApplicationContext().getFilesDir() + "/file");
             if(!dirwr.exists())
             dirwr.mkdirs(); //create folders where write files
             final File filewr = new File(dirwr+ "/lineswr.txt");
             if(!filewr.exists()) {
                 filewr.createNewFile();
            } 
         FileInputStream inputwr = openFileInput("lineswr.txt"); // Open input stream
         DataInputStream dinwr = new DataInputStream(inputwr);
         int szwr = dinwr.readInt(); // Read line count
         for (int iwr=0;iwr<szwr;iwr++) { // Read lines
            String linewr = dinwr.readUTF();
            myArrayListwr.add(linewr);
         }
         dinwr.close();
         }
        }
        catch (IOException exc) { exc.printStackTrace(); } 

    Button phy = (Button) findViewById(R.id.button3);

     Button mat = (Button) findViewById(R.id.button1);

     Button bio = (Button) findViewById(R.id.button2);

     Button chem = (Button) findViewById(R.id.button4);

     }



@Override
public void onBackPressed() {

    super.onBackPressed();


    try {
        if(myArrayList.size()!=0)
        {
            System.out.println("inside on back pressed saving data to lines");
           //Modes: MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITABLE
            String fileName = getApplicationContext().getFilesDir()+"/file/"+ "lines.txt";

           FileOutputStream output = openFileOutput("lines.txt",MODE_PRIVATE);
           DataOutputStream dout = new DataOutputStream(output);
           dout.writeInt(myArrayList.size()); // Save line count
           for(String line : myArrayList) // Save lines
              dout.writeUTF(line);
           dout.flush(); // Flush stream ...
           dout.close(); // ... and close.
        }
    }
        catch (IOException exc) { exc.printStackTrace(); }
    try {
        if(myArrayListwr.size()!=0)
        {
            System.out.println("inside on back pressed saving data to lineswr");
           //Modes: MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITABLE
            String fileNamewr = getApplicationContext().getFilesDir()+"/file/"+ "lineswr.txt";

           FileOutputStream outputwr = openFileOutput("lineswr.txt",MODE_PRIVATE);
           DataOutputStream doutwr = new DataOutputStream(outputwr);
           doutwr.writeInt(myArrayListwr.size()); // Save line count
           for(String linewr : myArrayListwr) // Save lines
              doutwr.writeUTF(linewr);
           doutwr.flush(); // Flush stream ...
           doutwr.close(); // ... and close.
        }
    }
        catch (IOException exc) { exc.printStackTrace(); }

    Intent intent = new Intent(MainActivity.this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("EXIT", true);
    startActivity(intent);

  }

}
导入java.io.BufferedReader;
导入java.io.DataInputStream;
导入java.io.DataOutputStream;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.ActionBar;
导入android.support.v7.app.ActionBarActivity;
导入android.text.Html;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.view;
导入android.widget.Button;
公共类MainActivity扩展了ActionBarActivity{
公共静态ArrayList myArrayList=新建ArrayList();
public static ArrayList myArrayListwr=new ArrayList();
静态int close=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
关闭=1;
System.out.println(“调用Oncreate”);
试试{
final File dir=新文件(getApplicationContext().getFilesDir()+“/File”);
如果(!(目录存在())
{
dir.mkdirs();//创建用于写入文件的文件夹
}
最终文件=新文件(dir+“/lines.txt”);
如果(!(file.exists())){
createNewFile();
} 
BufferedReader br=新的BufferedReader(新文件读取器(文件));
if(br.readLine()==null){
关闭=0;
}
br.close();
}
catch(IOException exc){exc.printStackTrace();}
试一试{
如果(myArrayList.size()=0&&close!=0)
{
System.out.println(“从文件行中检索数据”);
FileInputStream输入=openFileInput(“lines.txt”);//打开输入流
DataInputStream din=新的DataInputStream(输入);
int sz=din.readInt();//读取行计数

for(int i=0;iYou正在打开多个文件。是否可以打印语句并检查打印错误的代码部分。在catch子句下,编写简单的打印语句(和代码标识)。然后检查目录中是否存在该文件。您的代码运行正常。您可以发布错误日志信息吗?@alijandrowait@user3337714当iam执行此操作时,它显示文件已创建,但iam仍收到IO异常