`
31212
  • 浏览: 17898 次
  • 性别: Icon_minigender_2
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

java中从文件读出byte[]后转String,再由String转为byte[],写文件

 
阅读更多

        项目需要,不使用IO流,只能通过服务器端传字符串发送给客户端,进行文件的下载操作。同时,文件的上传工作也通过传递字符串的方式进行的。

        感谢小白和冲~

        以下是具体代码。

/**
  * 根据文件获得文件的bytes的字符串格式
  * 
  * @param filePath
  * @return
  */
 public static String getFileBytes(String filePath) throws AppException {
  StringBuilder sb = null;
  byte[] btArray = null;
  FileInputStream fis = null;
  ByteArrayOutputStream bos = null;
  try {
   File file = new File(filePath);
   fis = new FileInputStream(file);
   bos = new ByteArrayOutputStream(1000);
   byte[] b = new byte[1000];
   int n;
   while ((n = fis.read(b)) != -1) {
    bos.write(b, 0, n);
   }
   btArray = bos.toByteArray();
   sb = new StringBuilder();
   for (int i = 0; i < btArray.length; i++) {
    byte bt = btArray[i];
    sb.append(bt);
    sb.append(',');
   }
   sb = sb.replace(sb.length() - 1, sb.length() - 1, "");
  } catch (FileNotFoundException e) {
   throw new AppException(CommonEnum.IOERROR.getKey(),
     CommonEnum.IOERROR.getValue());
  } catch (IOException e) {
   throw new AppException(CommonEnum.IOERROR.getKey(),
     CommonEnum.IOERROR.getValue());
  } finally {
   try {
    if (fis != null) {
     fis.close();
    }
    if (bos != null) {
     bos.close();
    }
   } catch (IOException e) {
    // TODO log
   }
  }
  return sb.toString();
 }

 /**
  * 根据刚刚生成的byte数组转换的String,生成文件
  */
 public static void creatFile(String fileContext, String fileName)
   throws AppException {
  BufferedOutputStream bos = null;
  FileOutputStream fos = null;
  File file = null;
  try {
   file = new File(fileName);
   File paraFile = file.getParentFile();
   if (!paraFile.exists()) {
    paraFile.mkdirs();
   }
   fos = new FileOutputStream(file);
   bos = new BufferedOutputStream(fos);
   String[] split = fileContext.toString().split(",");
   byte[] tt = new byte[split.length];
   for (int i = 0; i < split.length; i++) {
    tt[i] = new Byte(split[i]);
   }
   bos.write(tt);
  } catch (Exception e) {
   throw new AppException(CommonEnum.IOERROR.getKey(),
     CommonEnum.IOERROR.getValue());
  } finally {
   try {
    if (bos != null) {
     bos.close();
    }
    if (fos != null) {
     fos.close();
    }
   } catch (IOException e) {
    // TODO LOG
   }
  }
 }

 

分享到:
评论

相关推荐

    使用RandomAccessFile流将一个文本文件读出,并导致写入到另一个文件当中。

    ### 使用RandomAccessFile流将一个文本文件读出并写入到另一个文件中的知识点解析 在Java编程语言中,`RandomAccessFile`类提供了一种非常灵活的方式来读取和写入文件。它支持随机访问,意味着我们可以直接跳转到...

    string与blob的写入与读出

    本篇文章将深入探讨`String`与`Blob`在Java中的使用,以及如何进行写入和读出操作。 首先,`String`是Java中表示文本的基本数据类型,它以Unicode字符集存储数据。在处理字符串时,我们通常会用到`StringBuilder`或...

    C#将文件读到数据&从数据库中读出文件

    本篇将详细探讨如何使用C#将文件读取到数据中,并从数据库中读取出文件。 一、文件读取与二进制转换 在C#中,我们可以使用`System.IO`命名空间中的类来处理文件操作。例如,使用`FileStream`和`BinaryReader`来...

    java读取图片并转化为二进制字符串的实现方法

    首先,我们需要了解Java中处理文件读写的基本类,比如`FileInputStream`和`FileOutputStream`。这两个类属于Java.io包,提供了读取文件和写入文件的方法。例如,`FileInputStream`类用于创建一个对象,通过这个对象...

    java IO流读写

    在Java中,IO流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。字节流处理单个字节的数据,而字符流则处理Unicode编码的16位字符。 1. **字节流**: - `InputStream` 和 `OutputStream` 是所有...

    VB6超大文件(大于2G)读写 示例代码

    在VB6(VB Visual Basic 6.0)中,处理超过2GB的大文件可能会遇到一些挑战,因为VB6的标准文件操作API(如Open、Input、Write等)在处理大文件时可能会受到限制。为了解决这个问题,我们可以利用Windows API中的`...

    Android开发进阶:如何读写Android文件.pdf

    为了提高效率,可以先将文件内容读入内存中的`ByteArrayOutputStream`,然后一次性写入或读出。以下是一个简单的例子: ```java // 写入数据 public void fileWrite(FileOutputStream fos, String content) { byte...

    c++文件读出

    在C++编程中,文件操作是一项基础且重要的任务。这里我们主要关注如何使用C++来读取文件,包括按行读取、按字节读取以及将文件内容存入数组中。下面将详细讲解这些知识点。 1. **按行读取文件**: 在C++中,可以...

    新版Java_IO精讲(推荐版)

    Java I/O(输入/输出)是Java编程语言中非常重要的组成部分,主要用于处理文件、控制台以及网络连接等场景下的数据读写操作。Java I/O支持两种基本的数据类型:字节流和字符流。 - **目标**:Java I/O的主要目标...

    jsp+servlet实现文件下载

    在配置了 web.xml 文件后,需要编写 DownloadFile.java 类来处理文件下载。这个类继承自 HttpServlet,并重写 doGet 方法来处理 GET 请求。在这个方法中,需要读取文件流,并将其输出到响应流中。例如: ```java ...

    C#编写文字读报并能转换成语音文件,Mp3或wma

    总结起来,C#实现文字转语音并保存为MP3或WMA文件的关键在于理解和使用`System.Speech.Synthesis`命名空间中的类和方法。通过调整语速、选择合适的语音引擎,我们可以创建一个功能丰富的文字读报应用。如果你想要...

    读出PGM图像

    以下是一些关于如何在Java中读取PGM图像的关键知识点: 1. **PGM格式**:PGM文件分为两种类型,P2(ASCII格式)和P5(二进制格式)。P2是文本格式,图像数据以十进制形式存储;P5是二进制格式,数据以字节流存储,...

    Java NIO介绍

    3. **限制(Limit)**:表示缓冲区中有效数据的数量,对于写操作,当位置达到限制时,就不能再写入数据了;对于读操作,则是从当前位置开始读取直到限制位置为止。 4. **标记(Mark)**:记录了一个位置,可以通过`reset...

    Android开发实现读取Assets下文件及文件写入存储卡的方法

    在Android应用开发中,有时我们需要处理大量的数据,例如在本例中,为了解析加密和解密的.so文件,需要将大量的Byte数组处理成字符串。由于直接在代码中声明大型的Byte数组会导致编译错误,因此我们可以选择将这些...

    基于Java编程实现对位图的编辑.pdf

    一个完整的BMP格式位图文件由位图文件头和位图数据两部分组成。位图文件头的作用是存储图像的类型、尺寸、颜色深度等信息, 一般为位图文件的前54个字节;位图数据是整个位图文件的主体,一般都是从位图文件第55字节...

    Java移动文件夹及其所有子文件与子文件夹

    Java移动文件夹及其所有子文件与子文件夹是Java编程语言中的一种常见操作,在实际开发中经常会遇到这种需求。下面我们将详细介绍如何使用Java移动文件夹及其所有子文件与子文件夹。 移动文件夹及其所有子文件与子...

    vb读取txt文件

    Open "文件路径及文件名" For Input As #gFileNum ' 以读出方式打开文件 Input #gFileNum, 用来放读取的内容的内存变量名 Close #gFileNum ' 关闭文件 ``` ### 知识点二:使用TextStream对象读取TXT文件 使用`...

    Java测试题2答案

    要从文件" file.dat"文件中读出第10个字节到变量C中,下列哪个方法适合? A A FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();B FileInputStream in=new FileInputStream("file...

    jsp图片插入数据库并读出页面

    在建立了数据库表后,我们可以使用 JSP 文件将图片存储到数据库中。我们可以使用 HTML 表单将图片上传到 JSP 文件,然后使用 JSP 编程语言将图片存储到数据库中。例如,我们可以使用以下代码将图片存储到数据库中: ...

    c++获取jpg图片的尺寸

    在C++编程中,获取JPEG图片的尺寸是一项常见的任务,特别是在图像处理或图形用户界面的应用中。JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩图像格式,它能够有效地减少图片的存储空间。要...

Global site tag (gtag.js) - Google Analytics