Bonjour,
J'essaye de coder une petite appli avec android studio sous java.
J'ai l'intention de sauvegarder un fichier txt en interne.
Mon code compile sans problème mais lorsque je clique sur le bouton afficherFichier mon appli plante.
Ce bouton lance la méthode lireFichier.
Ci-dessous mon code ainsi que mon fichier xml pour identifier les divers widgets.
Le fichier .xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
tools:context=".RelevFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/Titre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="25dp"
android:padding="10dp"
android:textSize="25sp"
android:text="@string/relev_des_tensions"/>
<EditText
android:id="@+id/LesTensions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:hint="@string/marquer_les_tensions_s_par_es_d_une_virgule_sans_espace"
android:textSize="22sp"
android:minHeight="200dp"
android:layout_marginHorizontal="10dp"
/>
<Button
android:id="@+id/CreateFichier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="@string/cr_er_le_fichier"
android:textAlignment="center"
android:textSize="20sp"
android:paddingHorizontal="16dp"
/>
<Button
android:id="@+id/afficherFichier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="@string/afficher_le_fichier"
android:textAlignment="center"
android:textSize="20sp"
android:paddingHorizontal="16dp"/>
<TextView
android:id="@+id/Mesreleves"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="10dp"
android:textSize="20sp"
/>
</LinearLayout>
Le fichier ReleveFragment.java
package com.example.essaitension1;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.essaitension1.databinding.FragmentRelevBinding;
import org.jetbrains.annotations.Nullable;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class RelevFragment extends Fragment {
//variable globale pour binding
FragmentRelevBinding binding;
public String voirtensions; //variable représentant les tensions dans EditText
//ci-dessous constructeur
public RelevFragment() {
this.voirtensions = voirtensions;
}
public static RelevFragment newInstance(){
RelevFragment fragment = new RelevFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//ci-dessous modif pour indiquer au systeme qu'il doit faire la liaison avec la classe
// de liaison viewBinding
binding = FragmentRelevBinding.inflate(inflater, container, false);
return binding.getRoot();
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding.CreateFichier.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
voirtensions= binding.LesTensions.getText().toString();
ecrireFichier("monFichier.txt", binding.LesTensions.getText().toString());
}
});
//************************************************************************************
binding.afficherFichier.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
binding.LesTensions.setText(lireFichier("monFichier.txt"));
}
});
}
//***********************************************************************************
private void ecrireFichier(String nomFichier, String voirtensions){
BufferedWriter writer = null;
try {
File dir = getDir("TousMesFichiers");
File newfile = new File(dir.getAbsolutePath() + File.separator + nomFichier);
newfile.createNewFile();
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newfile)));
writer.write(voirtensions);
} catch (Exception e) {
e.printStackTrace();
}
finally {
if (writer != null)
{
try
{
writer.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
private File getDir(String tousMesFichiers) {
return (null);
}
//************************************************************************************
private String lireFichier(String nomFichier) {
File dir = getDir("ToutMesFichiers");
File newFile = new File(dir.getAbsolutePath() + File.separator + nomFichier);
String voirtensions = " ";
BufferedReader input = null;
try {
input = new BufferedReader(new InputStreamReader(new FileInputStream(newFile)));
String line;
StringBuffer buffer = new StringBuffer();
while ((line = input.readLine()) != null) {
buffer.append(line);
}
voirtensions = buffer.toString();
} catch (Exception e) {
e.printStackTrace();
}
finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return voirtensions;
}
}
Merci et Joyeux Noël
a+++ rapidego
Windows / Firefox 133.0