`

文件存储 读写

阅读更多

 

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本地数据存储之文件存储读写

    总之,理解并掌握Android中的文件存储,特别是.txt文件的读写、重写和删除,是每个Android开发者必备的基础技能。结合适当的辅助工具类,可以大大提高开发效率,并确保数据存储的可靠性和稳定性。

    基于Android的文件存储读写

    此外,SQLite还支持对文件路径字符串的存储,这在不需要直接将文件内容保存在数据库中时非常有用。例如,可以将文件路径保存为一个字符串字段,然后在需要时读取该文件。 总之,在Android应用中,SQLite提供了灵活...

    内部存储读写文件

    本文将详细介绍如何在Android Studio中获取内部存储路径,创建文件夹,以及进行读写和删除文件的操作。 首先,获取内部存储路径通常使用Android的`getFilesDir()`或`getInternalStorageDirectory()`方法。`...

    BMP文件的读写C代码及文档.rar

    此外,“BMP file format.pdf”文档应该提供了更详细的BMP文件格式规范和读写操作的指导,包括不同位深度(如24比特)下的数据存储方式,以及可能遇到的兼容性和效率问题。 总之,这个压缩包对于想要学习或改进...

    Android 文件读写操作

    在Android系统中,文件读写操作是开发过程中常见的任务,涉及到资源文件、数据区文件以及外部存储(如SD卡)的访问。以下是对这些操作的详细说明: 一、资源文件的读取 1. 从resource的raw中读取文件数据: 资源...

    c++对TDMS文件的读写

    TDMS(Technical Data Management Streaming)是一种由 National Instruments 开发的文件格式,用于存储和交换技术数据。 TDMS 文件格式具有高效、灵活、可扩展等特点,广泛应用于科学研究、数据采集、自动化测试等...

    随机文件的读写(VB)

    在VB(Visual Basic)编程环境中,随机文件的读写是一项基本技能,对于处理大量数据或者进行数据存储的应用程序尤其重要。本教程将深入探讨如何利用VB进行随机文件的读写操作,帮助你理解并掌握这一核心概念。 随机...

    Android不需要文件存储权限将文件保存至手机

    在Android系统中,传统的文件存储方式通常需要应用获取相应的文件读写权限,以便在外部存储(如SD卡)上保存和访问数据。然而,随着Android系统的更新,特别是自Android 6.0(Marshmallow)引入运行时权限管理以来,...

    文件读写,实现了不同格式的文件读写

    文件读写是计算机系统与用户交互的关键途径,它允许程序存储和检索信息。在编程中,文件操作主要包括打开、读取、写入、关闭文件等操作。这些操作对于保存用户数据、记录日志、交换信息以及持久化应用程序状态等场景...

    android文件读写权限

    在Android应用开发中,文件读写权限是至关重要的一个环节,因为这关乎到应用程序能否正常地存储和访问数据。Android操作系统采用严格的权限管理系统,确保应用只能在其被授权的范围内操作。下面将详细介绍Android中...

    linux c 配置文件读写

    配置文件通常用于存储程序的设置或用户偏好,使其能够根据不同的环境或需求进行定制。下面我们将深入探讨如何在C语言中实现对配置文件的读写。 首先,配置文件的格式多种多样,如文本文件(.txt)、INI文件(.ini)...

    03内部存储中读写文件

    本文将深入探讨如何使用Java IO在Android内部存储中进行读写文件操作。 首先,了解Android内部存储的结构是至关重要的。每个应用程序都有自己的数据目录,可以通过`Context`对象的`getFilesDir()`方法获取。这个...

    csv文件读写操作

    CSV(Comma Separated Values)文件是一种常见的数据存储格式,广泛应用于数据分析、数据库导入导出等领域。在MFC(Microsoft Foundation Classes)环境下,利用Visual Studio 2015进行CSV文件的读写操作,可以方便...

    python中的文件读写练习题(csdn)————程序.pdf

    CSV (Comma Separated Values) 文件是一种通用的文本文件格式,常用于数据交换和存储。 Python 中有多种方式可以读取 CSV 文件,包括使用 csv 模块、pandas 库等。 在本文中,我们使用 csv 模块来读取 CSV 文件。...

    delphi 文件读写

    在Delphi编程环境中,文件读写是常见的操作,主要用于存储和检索数据。本文将深入探讨如何使用Delphi进行文本文件的读写操作,包括基本概念、常用函数和类,以及实际应用示例。 首先,了解文件系统的基本概念是至关...

    C#配置文件读写源代码

    .NET应用程序的配置文件通常分为两部分:App.config用于存储全局设置,而User.config则保存用户的个性化设置,这些设置可以在程序运行时动态修改。App.config文件基于XML结构,包含`<configuration>`、`...

    C语言文件随机读写

    在进行完文件操作后,别忘了关闭文件,以确保所有更改被保存并释放系统资源。这通过`fclose()`函数完成: ```c fclose(fp); ``` 在实际应用中,我们可能还需要处理错误,比如文件打开失败、读/写过程中出错等。...

    VB.net 二进制文件的读写源代码

    在.NET框架中,VB.NET(Visual Basic .NET)是一种面向对象的编程语言,它提供了丰富的功能,包括对二进制文件的读写操作。本文将深入探讨VB.NET中如何进行二进制文件的读写,这是一项核心的IO操作技能。 二进制...

    c语言通讯录链表文件读写

    功能:添加,删除,查找,全部输出。 添加时自动保存到文件, 查找、全部输出时从文件中读取; 复制粘贴即可运行!绝对好用

Global site tag (gtag.js) - Google Analytics