package com.lisq.kuaipan.oauth; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.os.Environment; import android.util.Log; public class FileUtils { private String SDPATH; // 用于存sd card的文件的路径 private final static String TAG = "kuaipan"; public String getSDPATH() { return SDPATH; } public void setSDPATH(String sDPATH) { SDPATH = sDPATH; } /** * 构造方法 获取SD卡路径 */ public FileUtils() { // 获得当前外部存储设备的目录 SDPATH = Environment.getExternalStorageDirectory() + "/"; Log.e(TAG, "sd card's directory path: " + SDPATH); } /** * 在SD卡上创建文件 * * @throws IOException */ public File createSDFile(String fileName) throws IOException { File file = new File(SDPATH + fileName); file.createNewFile(); return file; } /** * 在SD卡上创建目录 */ public File createSDDir(String dirName) { File dir = new File(SDPATH + dirName); Log.e(TAG, "storage device's state :" + Environment.getExternalStorageState()); if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { Log.e(TAG, "this directory real path is:" + dir.getAbsolutePath()); Log.e(TAG, "the result of making directory:" + dir.mkdir() + " it is exist? = " + dir.exists()); } return dir; } /** * 判断SD卡上的文件夹是否存在 */ public boolean isFileExist(String fileName) { File file = new File(SDPATH + fileName); Log.e(TAG, "FileUtils isFileExist fileName= " + fileName); return file.exists(); } /** * 将一个inputSteam里面的数据写入到SD卡中 */ public File write2SDFromInput(String path, String fileName, InputStream inputStream) { File file = null; OutputStream output = null; // BufferedWriter bufferedWriter; try { // 创建SD卡上的目录 File tempf = createSDDir(path); Log.e(TAG, "FileUtils write2SDFromInput directory in the sd card: = " + tempf.exists()); file = createSDFile(path + fileName); Log.e(TAG, "FileUtils write2SDFromInput file in the sd card: = " + file.exists()); output = new FileOutputStream(file); // bufferedWriter = new BufferedWriter(new FileWriter(file)); // byte buffer[] = new byte[20 * 1024]; // int filesize = inputStream.available(); // byte buffer[] = new byte[filesize]; // Log.e(TAG, "FileUtils write2SDFromInput 111= "); // int length = 0; // // length = inputStream.read(buffer); // Log.e(TAG, "FileUtils write2SDFromInput 1 length= " + length); // // while ((length = inputStream.read(buffer)) != -1) { // // Log.e(TAG, "FileUtils write2SDFromInput length= " + length); // // bufferedWriter.write(buffer, 0, length); // // } // while ((inputStream.read(buffer)) != -1) { // output.write(buffer); // } byte[] buffer = new byte[1024]; int readIndex; while (-1 != (readIndex = inputStream.read(buffer, 0, buffer.length))) { output.write(buffer, 0, readIndex); } // bufferedWriter.flush(); inputStream.close(); // bufferedWriter.close(); output.flush(); } catch (FileNotFoundException e) { Log.e(TAG, "FileUtils write2SDFromInput 222"); e.printStackTrace(); } catch (IOException e) { Log.e(TAG, "FileUtils write2SDFromInput 333"); e.printStackTrace(); } finally { try { Log.e(TAG, "FileUtils write2SDFromInput 444"); // output.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return file; } }
相关推荐
总之,理解并掌握Android中的文件存储,特别是.txt文件的读写、重写和删除,是每个Android开发者必备的基础技能。结合适当的辅助工具类,可以大大提高开发效率,并确保数据存储的可靠性和稳定性。
此外,SQLite还支持对文件路径字符串的存储,这在不需要直接将文件内容保存在数据库中时非常有用。例如,可以将文件路径保存为一个字符串字段,然后在需要时读取该文件。 总之,在Android应用中,SQLite提供了灵活...
本文将详细介绍如何在Android Studio中获取内部存储路径,创建文件夹,以及进行读写和删除文件的操作。 首先,获取内部存储路径通常使用Android的`getFilesDir()`或`getInternalStorageDirectory()`方法。`...
此外,“BMP file format.pdf”文档应该提供了更详细的BMP文件格式规范和读写操作的指导,包括不同位深度(如24比特)下的数据存储方式,以及可能遇到的兼容性和效率问题。 总之,这个压缩包对于想要学习或改进...
在Android系统中,文件读写操作是开发过程中常见的任务,涉及到资源文件、数据区文件以及外部存储(如SD卡)的访问。以下是对这些操作的详细说明: 一、资源文件的读取 1. 从resource的raw中读取文件数据: 资源...
TDMS(Technical Data Management Streaming)是一种由 National Instruments 开发的文件格式,用于存储和交换技术数据。 TDMS 文件格式具有高效、灵活、可扩展等特点,广泛应用于科学研究、数据采集、自动化测试等...
在VB(Visual Basic)编程环境中,随机文件的读写是一项基本技能,对于处理大量数据或者进行数据存储的应用程序尤其重要。本教程将深入探讨如何利用VB进行随机文件的读写操作,帮助你理解并掌握这一核心概念。 随机...
在Android系统中,传统的文件存储方式通常需要应用获取相应的文件读写权限,以便在外部存储(如SD卡)上保存和访问数据。然而,随着Android系统的更新,特别是自Android 6.0(Marshmallow)引入运行时权限管理以来,...
文件读写是计算机系统与用户交互的关键途径,它允许程序存储和检索信息。在编程中,文件操作主要包括打开、读取、写入、关闭文件等操作。这些操作对于保存用户数据、记录日志、交换信息以及持久化应用程序状态等场景...
在Android应用开发中,文件读写权限是至关重要的一个环节,因为这关乎到应用程序能否正常地存储和访问数据。Android操作系统采用严格的权限管理系统,确保应用只能在其被授权的范围内操作。下面将详细介绍Android中...
配置文件通常用于存储程序的设置或用户偏好,使其能够根据不同的环境或需求进行定制。下面我们将深入探讨如何在C语言中实现对配置文件的读写。 首先,配置文件的格式多种多样,如文本文件(.txt)、INI文件(.ini)...
本文将深入探讨如何使用Java IO在Android内部存储中进行读写文件操作。 首先,了解Android内部存储的结构是至关重要的。每个应用程序都有自己的数据目录,可以通过`Context`对象的`getFilesDir()`方法获取。这个...
CSV(Comma Separated Values)文件是一种常见的数据存储格式,广泛应用于数据分析、数据库导入导出等领域。在MFC(Microsoft Foundation Classes)环境下,利用Visual Studio 2015进行CSV文件的读写操作,可以方便...
CSV (Comma Separated Values) 文件是一种通用的文本文件格式,常用于数据交换和存储。 Python 中有多种方式可以读取 CSV 文件,包括使用 csv 模块、pandas 库等。 在本文中,我们使用 csv 模块来读取 CSV 文件。...
在Delphi编程环境中,文件读写是常见的操作,主要用于存储和检索数据。本文将深入探讨如何使用Delphi进行文本文件的读写操作,包括基本概念、常用函数和类,以及实际应用示例。 首先,了解文件系统的基本概念是至关...
.NET应用程序的配置文件通常分为两部分:App.config用于存储全局设置,而User.config则保存用户的个性化设置,这些设置可以在程序运行时动态修改。App.config文件基于XML结构,包含`<configuration>`、`...
在进行完文件操作后,别忘了关闭文件,以确保所有更改被保存并释放系统资源。这通过`fclose()`函数完成: ```c fclose(fp); ``` 在实际应用中,我们可能还需要处理错误,比如文件打开失败、读/写过程中出错等。...
在.NET框架中,VB.NET(Visual Basic .NET)是一种面向对象的编程语言,它提供了丰富的功能,包括对二进制文件的读写操作。本文将深入探讨VB.NET中如何进行二进制文件的读写,这是一项核心的IO操作技能。 二进制...
功能:添加,删除,查找,全部输出。 添加时自动保存到文件, 查找、全部输出时从文件中读取; 复制粘贴即可运行!绝对好用