软件开发-安卓,文件夹创建及文件读写出错,希望大神看看

问题描述

安卓,文件夹创建及文件读写出错,希望大神看看

以下是mainActivity:

 package com.example.dell_pc.myapplication;

import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Environment;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class MainActivity extends AppCompatActivity {
    Button but_write;
    Button but_read;
    TextView tx;
    String str;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        but_write=(Button)super.findViewById(R.id.but_write);
        but_read=(Button)super.findViewById(R.id.but_read);
        tx=(TextView)super.findViewById(R.id.print);
        try {
            createFile();
            but_write.setOnClickListener(new WriteOnClickListener());
            but_read.setOnClickListener(new ReadOnClickListener());
        }
        catch(Exception e){
            tx.setText("创建文件出错");
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    class ReadOnClickListener implements View.OnClickListener
    {
        String str;
        public void onClick(View v)
        {
            try {
                File f1 = new File(str);
                FileInputStream fIn = new FileInputStream(f1);
                Scanner s = new Scanner(f1);
                String str2 = "";
                if (s.hasNext()) str2 = s.next();
                tx.setText(str2);
                s.close();
            }
            catch(Exception e)
            {
                tx.setText("创建输入流的时候出了问题");
            }
        }

    }
    class WriteOnClickListener implements View.OnClickListener
    {
        public void onClick(View v)
        {
            try {
                File f2 = new File(str);
                FileOutputStream fOut = new FileOutputStream(f2);
                PrintWriter printWriter = new PrintWriter(fOut);
                printWriter.println("this is a test");
                printWriter.close();
            }
            catch(Exception e)
            {
                tx.setText("创建输出流的时候出了问题");
            }
        }
    }

    public void createFile() throws
            IOException
    {
        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
        {
            String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/t";
            File file=new File(path);
            if(!file.exists()) file.mkdirs();
            str=path+"/test.txt";
            file=new File(str);
            if(!file.exists()) file.createNewFile();

        }
    }
}

下面贴张图:
开发-安卓,文件夹创建及文件读写出错,希望大神看看-有希望的男人迅雷看看">

从图中看出,创建文件那里就出错了,希望大神解答,指出不正确之处

解决方案

单步调试下,是不是文件写入的错误

解决方案二:

请问你在manifest.xml中添加了文件读写权限了吗?

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

解决方案三:

模拟器的sd卡功能没开吧?

解决方案四:

1) 如果可以的话可以在异常处理中把你的异常信息打出来,一查异常信息就差不多了。
catch(Exception e){
tx.setText("创建文件出错");
}
2) 调试文件模拟器可能不一定好用,可以找个手机试试。

解决方案五:

错误信息打印出来看看。

  catch(Exception e){
            tx.setText("创建文件出错"+e.getMessage());
        }

解决方案六:

请做如下几件事情:
1,确认权限-存储设备读写权限。
//
//
2,对存储是否挂载的判断情况做log输出
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
//Log.d(.......);
} else {
//Log.d(........)
}
3,log打印你的文件路径,判断是否有问题
4,打印e信息:
catch(Exception e){
tx.setText("创建文件出错");
//TODO print your message in e
}
以下与当前错误无关:
5,文件读写都不要放在主线程,养成好习惯
6,不要硬编码

解决方案七:

这个路径: String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/t"; 无效吧
你把这个路径通过 CatLog 输出看看

时间: 2024-08-22 14:06:46

软件开发-安卓,文件夹创建及文件读写出错,希望大神看看的相关文章

软件开发-为什么这运行结果老卡住不动?求助大神。。

问题描述 为什么这运行结果老卡住不动?求助大神.. #include<stdio.h> #include<stdlib.h> #include<conio.h> int main() { char a[5][10]={'#','#','#','#','#','#','#','#','#','#','#','o',' ','#','#','#','#',' ',' ',' ','#','#',' ',' ','#',' ',' ',' ','#','#','#','#',

自己创建的文件夹-mfc对话框批量创建文件夹和空文件

问题描述 mfc对话框批量创建文件夹和空文件 mfc对话框批量创建文件夹和空文件,创建文件夹和文件,才学mfc,求解答,求案例 解决方案 CreateDirectory API 解决方案二: 创建空文件用CreateFile,再 CloseFile 解决方案三: 可以用windowsAPI,可以用System()执行md命令. 解决方案四: 得到sFolder了,就可以CreateFile来创建. 解决方案五: CreateDirectory/CFile::Open(...)/Close()/C

mac-在Mac下用fopen()+文件名为什么不能在源文件所在文件夹创建文件?

问题描述 在Mac下用fopen()+文件名为什么不能在源文件所在文件夹创建文件? 如 FILE *fp; fp = fopen("test","w"); 解决方案 会在你运行可执行文件的目录创建 解决方案二: 相对路径是相对当前的工作路径的,如果你的工作路径不在源代码的文件夹,那么创建文件当然也不在.

android开发中drawable文件夹下的文件是干什么用

问题描述 android开发中drawable文件夹下的文件是干什么用 android开发中drawable文件夹下的文件是干什么用的是作为对象用,还是作为方法参数用还是如何使用 解决方案 一般是和图片等资源相关的 解决方案二: drawable文件夹一般不放置图片资源,存放一些动画文件.选择器文件.图形配置文件,drawable-mdip/hdip/xhdip文件夹放置图片资源 解决方案三: drawable一般都是放置一些飞图片资源但是又可以管理图片资源的一些xml文件 ,一般都是放置一些s

Linux:centos释放缓存,查看磁盘空间大小,xxx文件夹, 查看文件夹大小,查看剩余内存,查看xxx软件位置,统计某文件夹,统计某文件夹下目录数量,查看文件夹大小,给文件夹下所有的文件赋值权限

一台老的PHP后台服务器,今天用 free -m 查看,发现内存跑满了. 再 top,然后按下shift+m,也就是按内存占用百分比排序,发现排在第一的进程,才占用0.9%,那是什么占用的呢?谷歌了一下,据说是centos为了提高效率,把部分使用过的文件缓存到了内存里.如果是这样的话,我又不需要这样的文件性能,那就可以释放.如下两个命令就可以: #sync #echo 3 > /proc/sys/vm/drop_caches 内存释放后,就占用很低了,如下: Centos上的最终命令是: [ro

文件夹创建删除-android创建和删除文件夹

问题描述 android创建和删除文件夹 android如何创建和删除文件夹,网上说的各种方法都试过了 下面是代码 //创建文件夹????????????????????????????????????????? void createFile(File onClickFile, String fileName) { File f = new File(onClickFile.getAbsolutePath() + File.separator + fileName + File.separat

Android实时文件夹创建方法_Android

本文实例讲述了Android实时文件夹创建方法.分享给大家供大家参考.具体如下: 实时文件夹是一种用来显示由某个ContentProvider提供的数据信息的桌面组件.要创建一个实时文件夹,必须要有两方面的支持.一方面是,要定义一个用来创建实时文件夹的Activity.另一方面是,所指定数据信息URI的ContentProvider必须支持实时文件夹的查询.本节中就将要介绍如何为应用程序创建实时文件夹. 与在Launcher的桌面上添加一个快捷方式类似,用户在桌面上长按后选择实时文件夹就会弹出一

在link中使用codefirst技术制作一个《网盘软件》,请问如何列出zip文件夹下的文件?

问题描述 在link中使用codefirst技术制作一个<网盘软件>,请问如何列出zip文件夹下的文件? 在link中使用codefirst技术制作一个<网盘软件>,请问如何列出zip文件夹下的文件? 解决方案 http://codego.net/18342/

iphone(苹果)上创建文件夹及删除文件夹

    创建文件夹的方法:        手指按住屏幕的任意应用图标,当屏幕出现晃动时,把它拖拽到其他应用图标之上,这时iphone5会自动在桌面上创建一个文件夹.                 注:文件夹创建时的名字会和初始的那个文件同名,可以修改.每个创建好的文件夹可以摆放12个应用图标.           文件夹名的修改方法:        1.打开文件夹,在图标处于排序状态下时,点击顶部的"文件夹名称".        2.这时名称处变成了输入框,输入你要起的名字.