将文件转换为字节数组,反之亦然

2022-09-01 04:09:27

我发现了许多将文件转换为字节数组并将字节数组写入存储文件的方法。

我想要的是转换为字节数组,然后将字节数组转换回.java.io.Filejava.io.File

我不想像下面这样把它写到存储中:

//convert array of bytes into file
FileOutputStream fileOuputStream = new FileOutputStream("C:\\testing2.txt"); 
fileOuputStream.write(bFile);
fileOuputStream.close();

我想以某种方式执行以下操作:

File myFile = ConvertfromByteArray(bytes);

答案 1

否则试试这个:

将文件转换为字节

  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileNotFoundException;
  import java.io.IOException;


   public class Temp {

        public static void main(String[] args) {

         File file = new File("c:/EventItemBroker.java");

         byte[] b = new byte[(int) file.length()];
         try {
               FileInputStream fileInputStream = new FileInputStream(file);
               fileInputStream.read(b);
               for (int i = 0; i < b.length; i++) {
                           System.out.print((char)b[i]);
                }
          } catch (FileNotFoundException e) {
                      System.out.println("File Not Found.");
                      e.printStackTrace();
          }
          catch (IOException e1) {
                   System.out.println("Error Reading The File.");
                    e1.printStackTrace();
          }

       }
    }

将字节转换为文件

      public class WriteByteArrayToFile {

         public static void main(String[] args) {

            String strFilePath = "Your path";
            try {
                 FileOutputStream fos = new FileOutputStream(strFilePath);
                 String strContent = "Write File using Java ";

                 fos.write(strContent.getBytes());
                 fos.close();
           }
          catch(FileNotFoundException ex)   {
                 System.out.println("FileNotFoundException : " + ex);
          }
         catch(IOException ioe)  {
                 System.out.println("IOException : " + ioe);
          }

       }
     }

答案 2

我想你误解了这个类的真正代表。它只是系统上文件的表示形式,即其名称,路径等。java.io.File

你有没有看过Javadoc的课程?看看这里 如果你检查它拥有的字段或方法或构造函数参数,你会立即得到提示,它的全部,都是URL/路径的表示形式。java.io.File

Oracle在其Java File I / O教程中提供了相当广泛的教程,还具有最新的NIO.2功能。

使用NIO.2,您可以使用java.nio.file.Files.readAllBytes()在一行中读取它。

同样,您可以使用java.nio.file.Files.write()来写入字节数组中的所有字节。

更新

由于该问题被标记为Android,因此更传统的方法是将 包装在 a 中,然后将其包装在 .这将允许您读取 .类似地,它们的对应项也存在于 .FileInputStreamBufferedInputStreamByteArrayInputStreambyte[]OutputStream