Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 Android将文件加载到数组NullPointerException中_Java_Android_Android File - Fatal编程技术网

Java Android将文件加载到数组NullPointerException中

Java Android将文件加载到数组NullPointerException中,java,android,android-file,Java,Android,Android File,您好,我正在尝试将一组“列表”加载到字符串数组中,列表只是.txt文档,我想使用文件名作为我显示器上的列表名,因此我需要获取我创建的名为“列表”的文件夹中的所有文件,然后将它们显示到arrayadapter中 private String[] getListNames() { //generates the file containing the list names File file = new File(this.getFilesDir() +File.separator

您好,我正在尝试将一组“列表”加载到字符串数组中,列表只是.txt文档,我想使用文件名作为我显示器上的列表名,因此我需要获取我创建的名为“列表”的文件夹中的所有文件,然后将它们显示到arrayadapter中

private String[] getListNames() {
    //generates the file containing the list names
    File file = new File(this.getFilesDir() +File.separator +"Lists"); 
    System.out.println(file.getAbsolutePath());
    File lists[] = file.listFiles();
    String names[] = {};


    if(lists.length >0){

    for(int i = 0; i < lists.length; i ++){
        names[i] = lists[i].getName();
    }
    }else{
        names[0] = "Create New List";
    }
private List myList=new ArrayList();
字符串root_sd=Environment.getExternalStorageDirectory().toString();
file=新文件(root_sd+“/Lists”);
文件列表[]=File.listFiles();
for(int i=0;i
试试这个。
//使用两个布尔变量。
文件;
布尔值mExternalStorageAvailable=false;
布尔值mExternalStorageWriteable=false;
//检查SD卡在设备中是启用还是禁用
String state=Environment.getExternalStorageState();
if(环境、介质、安装等于(状态)){
mExternalStorageAvailable=mExternalStorageWriteable=true;
}else if(Environment.MEDIA\u MOUNTED\u READ\u ONLY.equals(state)){
mExternalStorageAvailable=true;
mExternalStorageWriteable=false;
}否则{
mExternalStorageAvailable=mExternalStorageWriteable=false;
}
私有字符串[]getListNames(){
如果(mExternalStorageAvailable){
文件路径=新文件(Environment.getExternalStorageDirectory().getAbsolutePath());
如果(!path.exists()){
path.mkdirs();
}                   
file=path.getAbsolutePath();
} 
否则{
//使用ContextWrapper以一种全新的方式访问内部存储。
ContextWrapper cw=新的ContextWrapper(getApplicationContext());
(或)
//生成包含列表名称的文件
file=新文件(this.getFilesDir()+file.separator+“list”);
如果(!file.exists()){
mkdirs()文件;
}
System.out.println(file.getAbsolutePath());
}
文件列表[]=File.listFiles();
字符串名称[]={};
试一试{
if(lists.length==0)
{
System.out.print(“目录中没有文件”);
}
否则{
如果(lists.length>0){
for(int i=0;i
如果
文件。getFileList()
是否确实返回任何内容,则需要记录:

更改此项:

File lists[] = file.listFiles();
String names[] = {};


if(lists.length >0){

for(int i = 0; i < lists.length; i ++){
    names[i] = lists[i].getName();
}
}else{
    names[0] = "Create New List";
}
文件列表[]=File.listFiles();
字符串名称[]={};
如果(lists.length>0){
for(int i=0;i

文件列表[]=File.listFiles();
字符串名称[]={};
if(lists!=null&&lists.length>0){
for(int i=0;i

注意:如果
列表
数组首先是
null
,则无法获取长度。!

初始化
字符串名称[]={};
如下
字符串[]名称=新字符串[lists.length>0?lists.length:1]
List\u Activity.java
类的第108行是哪一行?是的,List\u Activity.java的第108行,我刚刚做了一个快速测试,出于某种原因,它说文件不是目录,我如何修复它,因为我想这是替换
新文件(this.getFilesDir()+file.separator+“List”)的原因
使用
新文件(此.getFilesDir()+File.separator+“列出”+File.separator);
指向一个目录…检查是否(File.isDirectory)然后在if condition中继续你的逻辑当你发布答案时,请,请,请,将你的代码文本分开!并在代码中提供一些注释,OP无法理解他/她为什么会有问题!
private List<String> myList = new ArrayList<String>();   

String root_sd = Environment.getExternalStorageDirectory().toString();
file = new File( root_sd + "/Lists" ) ;       
File list[] = file.listFiles();

for( int i=0; i< list.length; i++)
{
        myList.add( list[i].getName() );
}
try this one.

//use two boolean variables.
 File file;
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;

//check if the sdcard is enable or disable in your device

String state = Environment.getExternalStorageState();

        if (Environment.MEDIA_MOUNTED.equals(state)) {
            mExternalStorageAvailable = mExternalStorageWriteable = true;
        } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            mExternalStorageAvailable = true;
            mExternalStorageWriteable = false;
        } else {
            mExternalStorageAvailable = mExternalStorageWriteable = false;
        }

    private String[] getListNames() {
 if (mExternalStorageAvailable) {
File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
if (!path.exists()) {
path.mkdirs();
}                   
file=path.getAbsolutePath();

} 
else {
//use   ContextWrapper it a onw way to access internal storage.    
   ContextWrapper cw = new ContextWrapper(getApplicationContext());     
(or)
        //generates the file containing the list names
file = new File(this.getFilesDir() +File.separator +"Lists"); 
if (!file.exists()) {
file.mkdirs();
}
        System.out.println(file.getAbsolutePath());
   }

   File lists[] = file.listFiles();
     String names[] = {};                   
    try{
        if (lists.length==0)
    {
      System.out.print("There is no files in the Directory");
    }
      else{

        if(lists.length >0){

        for(int i = 0; i < lists.length; i ++){
            names[i] = lists[i].getName();
        }
        }else{
            names[0] = "Create New List";
        }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
File lists[] = file.listFiles();
String names[] = {};


if(lists.length >0){

for(int i = 0; i < lists.length; i ++){
    names[i] = lists[i].getName();
}
}else{
    names[0] = "Create New List";
}
File lists[] = file.listFiles();
String names[] = {};

if(lists != null && lists.length >0){

for(int i = 0; i < lists.length; i ++){
    names[i] = lists[i].getName();
}
}else{
    names[0] = "Create New List";
}