Search code examples
javaazuredecodeazure-blob-storageencode

How to decode decoded files after downloading from Azure Storage?


I am trying to decode files after downloading via Azure Storage SDK for Java.

Here is my code:

try
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
            CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
            CloudBlobContainer container = blobClient.getContainerReference("mycontainer");
            CloudBlobDirectory blobDirectory = container.getDirectoryReference("shi");
            for (ListBlobItem blobItem : blobDirectory.listBlobs()) {
                if (blobItem instanceof CloudBlob) {
                    CloudBlob blob = (CloudBlob) blobItem;
                    blob.download(new FileOutputStream("/Users/shi/Downloads/" + blob.getName()));
                }
            }
        }

This code downloads all the BLOB files from mycontainer but there are encoded. How can I download them but in decoded form.


Solution

  • I solved it:

    public static int convertAvro(String avroFile) throws Exception {
    
        PrintStream out = new PrintStream(System.out);
        GenericDatumReader<Object> reader=new GenericDatumReader<Object>();
        org.apache.avro.file.FileReader<Object>  fileReader=  DataFileReader.openReader(new File(avroFile),reader);
          try {
            Schema schema=fileReader.getSchema();
            // System.out.print(schema);
            DatumWriter<Object> writer=new GenericDatumWriter<Object>(schema);
            JsonEncoder encoder=EncoderFactory.get().jsonEncoder(schema,out);
            for (Object datum : fileReader)     writer.write(datum,encoder);
            encoder.flush();
            out.println();
            out.flush();
          }
          finally {
            fileReader.close();
          }
          return 0;
    }