2017-09-15 68 views
0

我得到了保存更改的按钮,并将其放在内部存储器中,然后当应用程序启动时,如果有任何ofc,我想要读取文件。我认为这将是足够的,但即时新鲜的编码器,不知道这是很好的。如何从应用程序启动时从内部存储器读取文件android

我不知道哪里是错误的,也就是好的代码,请帮助我becous我坚持

我的代码:

公共类MyGameDetailsFragment扩展片段{

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_my_game_details, container, false); 


    try { 
     FileInputStream is = getActivity().openFileInput(file); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line).append("\n"); 
     } 
     is.close(); 
    } catch(OutOfMemoryError om) { 
     om.printStackTrace(); 


    } catch(Exception ex) { 
     ex.printStackTrace(); 

    } 
    String result = sb.toString(); 
    saveBtn = (Button) view.findViewById(R.id.savechangesbtn); 
    saveBtn.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View view) { 
      Data1 = s1.getText().toString(); 
      Data2 = s2.getText().toString(); 
      Data3 = s3.getText().toString(); 
      Data4 = s4.getText().toString(); 
      Data5 = s5.getText().toString(); 
      Data6 = s6.getText().toString(); 


      try { 

       FileOutputStream fos=getActivity().openFileOutput(file, getActivity().MODE_PRIVATE); 
       ObjectOutputStream outputStream = new ObjectOutputStream(fos); 
       outputStream.write(Data1.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data2.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data3.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data4.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data5.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data6.getBytes()); 
       outputStream.close(); 

       //Toast.makeText(context,"file saved",Toast.LENGTH_SHORT).show(); 
      }catch (FileNotFoundException e){ 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 

      } 

      try { 
       FileInputStream inputStream = getActivity().openFileInput(file); 
       BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); 
       StringBuilder total = new StringBuilder(); 
       String line; 

       while ((line = r.readLine()) != null) { 
        total.append(line); 
       } 
       r.close(); 
       inputStream.close(); 
       Log.d("File", "File contents: " + total); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 

     } 
    }); 

    return view; 

} }

ps:s1,s2等在代码中创建等

权限

<uses-permission android:name="android.hardware.camera" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 

回答

0

首先我建议你的是,不要在OnCreateView()写的代码片段的方法,总是在OnViewCreated方法编写代码。

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_my_game_details, container, false); 
    return view; 
} 

public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     try { 
     FileInputStream is = getActivity().openFileInput(file); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line).append("\n"); 
     } 
     is.close(); 
    } catch(OutOfMemoryError om) { 
     om.printStackTrace(); 


    } catch(Exception ex) { 
     ex.printStackTrace(); 

    } 
    String result = sb.toString(); 
    saveBtn = (Button) view.findViewById(R.id.savechangesbtn); 
    saveBtn.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View view) { 
      Data1 = s1.getText().toString(); 
      Data2 = s2.getText().toString(); 
      Data3 = s3.getText().toString(); 
      Data4 = s4.getText().toString(); 
      Data5 = s5.getText().toString(); 
      Data6 = s6.getText().toString(); 


      try { 

       FileOutputStream fos=getActivity().openFileOutput(file, getActivity().MODE_PRIVATE); 
       ObjectOutputStream outputStream = new ObjectOutputStream(fos); 
       outputStream.write(Data1.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data2.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data3.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data4.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data5.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data6.getBytes()); 
       outputStream.close(); 

       //Toast.makeText(context,"file saved",Toast.LENGTH_SHORT).show(); 
      }catch (FileNotFoundException e){ 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 

      } 

      try { 
       FileInputStream inputStream = getActivity().openFileInput(file); 
       BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); 
       StringBuilder total = new StringBuilder(); 
       String line; 

       while ((line = r.readLine()) != null) { 
        total.append(line); 
       } 
       r.close(); 
       inputStream.close(); 
       Log.d("File", "File contents: " + total); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 

     } 
    }); 
} 

如果您遇到任何错误,请写出错误的堆栈跟踪。

感谢

+0

我没有任何错误,我有问题,这个文本dosent显示了应用程序启动,莫比接近应用程式后,这个文件也被删除? 只有在consloe 7月9日至15日:59:24.604 1647年至1661年/ system_process E/memtrack:无法加载memtrack模块 7月9日至15日:59:24.604 1647年至1661年/ system_process W/android.os。调试:无法获取内存消耗信息:-1 –

+0

而且还需要检查文件是否在内部存储器中,如果没有正常View的loda –

0
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    Other = (TextView) view.findViewById(R.id.Details); 
    OtherD = (TextView) view.findViewById(R.id.OtherDetails); 



    try { 
     FileInputStream is = getActivity().openFileInput(file); 
     byte[] input = new byte[is.available()]; 
     while(is.read(input) != -1){ 


      value += new String(input); 
     } 
     is.getFD().sync(); 
     //is.flush(); 
     is.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    String[] strArray = value.split(";"); 

    s1.setText(strArray[1]); 
    s2.setText(strArray[2]); 
    s3.setText(strArray[3]); 
    s4.setText(strArray[4]); 
    s5.setText(strArray[5]); 
    s6.setText(strArray[6]); 
    s7.setText(strArray[7]); 






    saveBtn = (Button) view.findViewById(R.id.savechangesbtn); 
    saveBtn.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View view) { 
      Data1 = s1.getText().toString(); 

      Data2 = s2.getText().toString(); 
      Data3 = s3.getText().toString(); 
      Data4 = s4.getText().toString(); 
      Data5 = s5.getText().toString(); 
      Data6 = s6.getText().toString(); 
      Data7= s7.getText().toString(); 


      try { 

       FileOutputStream fos=getActivity().openFileOutput(file, getActivity().MODE_PRIVATE); 
       ObjectOutputStream outputStream = new ObjectOutputStream(fos); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data1.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data2.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data3.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data4.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data5.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data6.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data7.getBytes()); 
       outputStream.write(string3.getBytes()); 
       //outputStream.getFD().sync(); 
       outputStream.flush(); 
       outputStream.close(); 
       //Toast.makeText(context,"file saved",Toast.LENGTH_SHORT).show(); 
      }catch (FileNotFoundException e){ 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 

      } 

      try { 
       FileInputStream inputStream = getActivity().openFileInput(file); 
       BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); 
       StringBuilder total = new StringBuilder(); 
       String line; 
       while ((line = r.readLine()) != null) { 
        total.append(line); 
       } 
       r.close(); 
       inputStream.close(); 
       Log.d("File", "File contents: " + total); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 

     } 
    }); 


} 

解决它在我自己的

相关问题